Portál AbcLinuxu, 11. května 2025 23:32
read(3, "\0016K\0C\0\0\0\0\0\0\0\7\0\0\0\367\377\0\0003\0030\0\2\0\7\0\7\0\v\0", 32) = 32 read(3, "\2\0\0\0\233\0t\0\0\0\377\0\0\0\27\0\0\0\0\0\v\0\2\0\0\0\0\0", 28) = 28 read(3, "\321\0\0\0\322\0\0\0\275\0\0\0\323\0\0\0@\0\0\0\324\0\0\0\276\0\0\0N\7\0\0"..., 184) = 184 readv(3, [{"-misc-fixed-bold-r-normal--13-12"..., 54}, {"\17\0", 2}], 2) = 56 read(3, "\1\0K\0\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 32) = 32 read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 28) = 28 writev(3, [{"2\0\20\0\1\0006\0", 8}, {"-misc-fixed-bold-r-normal--13-12"..., 54}, {"\0\0", 2}], 3) = 64 read(3, 0x7ffffb640f40, 32) = -1 EAGAIN (Resource temporarily unavailable) poll([{fd=3, events=POLLIN, revents=POLLIN}], 1, -1) = 1 read(3, "\0016L\0C\0\0\0\0\0\0\0\7\0\0\0\367\377\0\0003\0030\0\2\0\7\0\7\0\v\0", 32) = 32 read(3, "\2\0\0\0\233\0t\0\0\0\377\0\0\0\27\0\0\0\0\0\v\0\2\0\0\0\0\0", 28) = 28 read(3, "\321\0\0\0\322\0\0\0\275\0\0\0\323\0\0\0@\0\0\0\324\0\0\0\276\0\0\0N\7\0\0"..., 184) = 184 readv(3, [{"-misc-fixed-bold-r-normal--13-12"..., 54}, {"\17\0", 2}], 2) = 56 read(3, "\1\0L\0\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 32) = 32 read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 28) = 28 writev(3, [{"2\0\22\0\1\0=\0", 8}, {"-misc-fixed-medium-r-normal--12-"..., 61}, {"\0\0\0", 3}], 3) = 72 read(3, 0x7ffffb640f40, 32) = -1 EAGAIN (Resource temporarily unavailable) poll([{fd=3, events=POLLIN, revents=POLLIN}], 1, -1) = 1 read(3, "\1=M\0I\0\0\0\0\0\r\0\r\0\v\0\2\0\r\4\0\0\0\0\0\0\r\0\r\0\v\0", 32) = 32 read(3, "\2\0\r\4\377\377\377\377!\0~\0!!\31\0\0!t\0\v\0\1\0\0\0\0\0", 28) = 28 read(3, "\275\0\0\0\316\1\0\0@\0\0\0\317\1\0\0\276\0\0\0001\1\0\0\277\0\0\0002\1\0\0"..., 200) = 200 readv(3, [{"-misc-fixed-medium-r-normal--12-"..., 61}, {"\0\0\0", 3}], 2) = 64 read(3, "\1\0M\0\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 32) = 32 read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 28) = 28 writev(3, [{"2\0\22\0\1\0=\0", 8}, {"-misc-fixed-medium-r-normal--12-"..., 61}, {"\0\0\0", 3}], 3) = 72 read(3, 0x7ffffb640f40, 32) = -1 EAGAIN (Resource temporarily unavailable) poll([{fd=3, events=POLLIN, revents=POLLIN}], 1, -1) = 1atd. Vždycky to čeká na
poll()
. Než se spustí (skoro 6 sekund), tak to docela kotlí CPU. Verze 1.0.1 a 1.0.2. Tyhle X aplikace jinak nepoužívám a u ničeho jinýho se mi nic takovýho nestává, tak nevím co s tím...
Nejprve ze souboru s fd = 3
úspěšně čteš, pak do něj úspěšně zapíšeš, ale poté se čtení nepodaří, tak se čeká funkcí poll
až z něho zase budeš moci číst. Podívej se tedy jaký soubor otevírá fce open
s fd = 3
a třeba se dozvíš proč k němu nejde přistupovat bez těch šílených prodlev.
$ strace xcalc 2>&1 | egrep -e ^open'\(.* = 3' -e ^close'\(3' open("/etc/ld.so.cache", O_RDONLY) = 3 close(3) = 0 open("/usr/lib/libXaw.so.7", O_RDONLY) = 3 close(3) = 0 open("/usr/lib/libXmu.so.6", O_RDONLY) = 3 close(3) = 0 open("/usr/lib/libXt.so.6", O_RDONLY) = 3 close(3) = 0 open("/usr/lib/libX11.so.6", O_RDONLY) = 3 close(3) = 0 open("/usr/lib/libSM.so.6", O_RDONLY) = 3 close(3) = 0 open("/usr/lib/libICE.so.6", O_RDONLY) = 3 close(3) = 0 open("/lib/libm.so.6", O_RDONLY) = 3 close(3) = 0 open("/lib/libc.so.6", O_RDONLY) = 3 close(3) = 0 open("/usr/lib/libXext.so.6", O_RDONLY) = 3 close(3) = 0 open("/usr/lib/libXpm.so.4", O_RDONLY) = 3 close(3) = 0 open("/usr/lib/libXau.so.6", O_RDONLY) = 3 close(3) = 0 open("/usr/lib/libXdmcp.so.6", O_RDONLY) = 3 close(3) = 0 open("/lib/libdl.so.2", O_RDONLY) = 3 close(3) = 0 open("/proc/meminfo", O_RDONLY) = 3 close(3) = 0a teprve potom to začne.
Nezapomeň grepovat i funkci connect
, visí Ti to totiž nejspíš na soketu v /tmp
s fd = 3
.
connect(3, {sa_family=AF_FILE, path="/tmp/.X11-unix/X0"}, 19) = 0
# ls -lF /tmp/.X11-unix/X0 srwxrwxrwx 1 root root 0 2007-09-07 14:08 /tmp/.X11-unix/X0=Fakt nevím...
A víš, která aplikace, tak šíleně vytěžuje ten procesor? Jaké programy v tu chvíli přistupují k tomu soketu?
strace startx -- :2
a to nic během spouštění xcalc nevypsalo. Nevím jaký balíky bych měl přeinstalovávat - xcalc jsem dneska nainstaloval (a ta verze předtím dělala totéž). Brzo nahodím xorg-server 1.4.
-p pid Attach to the process with the process ID pid and begin tracing. The trace may be termi- nated at any time by a keyboard interrupt signal (CTRL-C). strace will respond by detaching itself from the traced process(es) leaving it (them) to continue running. Multiple -p options can be used to attach to up to 32 processes in addition to command (which is optional if at least one -p option is given).A zajímavou vlastností strace je parametr
-e trace=
- viz. manuálová stránka.. něco jako -e trace=desc
by možná mohlo usnadnit grepování, pokud vůbec bude třeba..
&> log
...
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.