[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: XServer pausiert beim start



Andreas Stein <Andreas.Stein@mailbox.tu-dresden.de> writes:

> Hallo,
>
> beim starten von X bzw. dem kdm pausiert das System nach dem
> initialisieren des gewünschten Grafikmodus (d.h. Auflösung und
> Wiederholfrequenz bereits richtig, doch nur schwarzer Bildschirm) für
> ca. eine minute ohne etwas zu machen.
> ------------
> 02:42:04 stat64("/usr/bin/X11/xinit", {st_mode=S_IFREG|0755,
> st_size=9800, ...}) = 0
> 02:42:04 stat64("/usr/bin/X11/xinit", {st_mode=S_IFREG|0755,
> st_size=9800, ...}) = 0
> 02:42:04 rt_sigprocmask(SIG_BLOCK, [INT CHLD], [], 8) = 0
> 02:42:04 _llseek(255, -145, [3093], SEEK_CUR) = 0
> 02:42:04 fork()                         = 4262
> 02:42:04 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
> 02:42:04 rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
> 02:42:04 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
> 02:42:04 rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
> 02:42:04 rt_sigaction(SIGINT, {0x8072638, [], 0x4000000}, {SIG_DFL}, 8)
> = 0
> 02:42:04 wait4(-1, [WIFEXITED(s) && WEXITSTATUS(s) == 0], 0, NULL) =
> 4262
> 02:43:10 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
> 02:43:10 --- SIGCHLD (Child exited) ---
> 02:43:10 wait4(-1, 0xbffff5b4, WNOHANG, NULL) = -1 ECHILD (No child
> processes)
> 02:43:10 sigreturn()                    = ? (mask now [])
> 02:43:10 rt_sigaction(SIGINT, {SIG_DFL}, {0x8072638, [], 0x4000000}, 8)
> = 0
> 02:43:10 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
> 02:43:10 read(255, "\nif [ x\"$removelist\" != x ]; the"..., 3238) = 145
> --------------------------------------------
>
> Naja, so richtig schlau werde ich daraus nicht, nur das das Problem bei
> irgendeinem Aufruf von/durch xinit liegen muß.

Möglich, aber das lässt sich daraus nicht schließen.  Es gibt zwar die
beiden stat64()-Aufrufe, aber ob die mit dem Problem zusammenhängen,
ist nicht klar.

Dein Prozess macht einen fork() und wartet dann bis ein Tochterprozess
zurückkehrt (wait4()).  In diesem wird die Zeit verbraten.  Es gibt zu
diesem Zeitpunkt nur diesen einen Tochterprozess, wie der zweite
wait4()-Call zeigt.

Um das Problem einzugrenzen, solltest du den strace-Aufruf mit "-o
<filename> -ff" nochmal durchführen.  Dann erhältst du auch die Traces
der Tochterprozesse in eigenen Files.  Falls dies mehrere sind, schau
im Vaterprozess (dem mit der kleinsten pid (Suffix des Filenamens))
nach, was beim fork() und wait4() zurückgeliefert wird.  Das ist dann
der Suffix des Tochterprozesses.  In dem siehst du nach, was so lange
dauert.

Viel Erfolg,

 Heike



Reply to: