Ja, diese Frage wurde schon einmal gestellt, aber das Lesen der Antworten hat mich nicht sehr aufgeklärt.XIO: fataler IO-Fehler 11
Ich schrieb ein C-Programm, das nach ein paar Tagen der Verwendung abstürzt. Ein wichtiger Punkt ist, dass es keine Core-Datei generiert, obwohl alles so eingerichtet ist, dass es sollte (core_pattern, ulimit -c unlimited, etc. Ich kann eine Kern-Dump-Strafe mit kill -SIGQUIT auslösen).
Die Programme protokollieren ausführlich, was es tut, aber es gibt keinen Hinweis auf den Absturz im Protokoll. Die einzige Nachricht an dem Absturz angezeigt (? Oder vor) ist:
XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0"
after 2322 requests (2322 known processed) with 0 events remaining.
So zwei Fragen: - wie es für ein Programm möglich ist, zum Absturz zu bringen (return $ = 1?) Ohne Core Dump. - Worum geht es bei dieser Fehlermeldung und was kann ich tun?
-System ist RedHat Enterprise 6.4
Edit: schaffte ich es von einem Core-Dump zu erzwingen Abbruch durch den Aufruf() innerhalb eines atexit() Rückruf:
(gdb) bt
#0 0x00bc8424 in __kernel_vsyscall()
#1 0x0085a861 in raise() from /lib/libc.so.6
#2 0x0085c13a in abort() from /lib/libc.so.6
#3 0x0808f5cf in Unexpected() at MyCode.c:1378
#4 0x0085de9f in exit() from /lib/libc.so.6
#5 0x00c85701 in _XDefaultIOError() from /usr/lib/libX11.so.6
#6 0x00c85797 in _XIOError() from /usr/lib/libX11.so.6
#7 0x00c84055 in _XReply() from /usr/lib/libX11.so.6
#8 0x00c68b8f in XGetImage() from /usr/lib/libX11.so.6
#9 0x004fd6a7 in ??() from /usr/local/lib/libcvi.so
#10 0x00478ad5 in ??() from /usr/local/lib/libcvi.so
...
#29 0x001eed9d in ??() from /usr/local/lib/libcvi.so
#30 0x001eee41 in RunUserInterface() from /usr/local/lib/libcvi.so
#31 0x0808fab4 in main (argc=2, argv=0xbfbdc984) at MyCode.c:1540
Jeder kann mich aufzuklären, diese X11 Problem? libcvi.so gehört mir nicht, nur MyCode.c (LabWindows/CVI).
Bearbeiten 2014-12-05: Hier ist eine noch genauere Rückverfolgung. Dinge passieren definitiv in X11, aber ich bin kein X11-Programmierer, also schaue ich mir den Quellcode für X von der mitgelieferten Zeile nur an, dass der X-Server (?) Vorübergehend nicht verfügbar ist. Gibt es eine Möglichkeit, es einfach zu sagen, diesen Fehler zu ignorieren, wenn es nur vorübergehend ist?
#4 0x00965eaf in __run_exit_handlers (status=1) at exit.c:78
#5 exit (status=1) at exit.c:100
#6 0x00c356b1 in _XDefaultIOError (dpy=0x88aeb80) at XlibInt.c:1292
#7 0x00c35747 in _XIOError (dpy=0x88aeb80) at XlibInt.c:1498
#8 0x00c340a6 in _XReply (dpy=0x88aeb80, rep=0xbf82fa90, extra=0, discard=0) at xcb_io.c:708
#9 0x00c18c0f in XGetImage (dpy=0x88aeb80, d=27263845, x=0, y=0, width=60, height=20, plane_mask=4294967295, format=2) at GetImage.c:75
#10 0x005f46a7 in ??() from /usr/local/lib/libcvi.so
Entsprechende Linien:
XlibInt.c: _XDefaultIOError()
1292: exit(1);
XlibInt.c: _XIOError
1498: _XDefaultIOError(dpy);
xcb_io.c: _XReply()
708: if(!reply) _XIOError(dpy);
GetImage.c: XGetImage()
74: if (_XReply (dpy, (xReply *) &rep, 0, xFalse) == 0 || ...
Ihr Programm kann Deskriptoren löschen. Suchen Sie in seinem '/ proc//fd' -Verzeichnis, nachdem es einige Zeit ausgeführt wurde; Siehst du dort eine erhöhte Anzahl von Links? –
Es dauert normalerweise einige Tage, bis es abstürzt, aber ich werde die Situation überwachen. Ein paar Google-Tests führen mich zu der Annahme, dass es sich um ein Xinerama/NVidia-Multi-Monitor-Problem handelt, das nichts mit meiner App zu tun hat. – dargaud
Das Entfernen von Xinerama hat nicht geholfen. Ich bekomme diese Abstürze immer noch ohne Core Dump. Irgendein Werkzeug, das ich benutzen kann, um es aufzuspüren? – dargaud