PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Segfault on kernel-level



navi
03-03-2009, 16:02
Hallo, wir entwickeln gerade ein Stueck Software und benutzen als Bibliotheken Boost-Serialization, Boost-MPI, MPI und ParMetis.

Wie das mit C++ halt so ist, bekommen wir ab und an einen Segfault.
Wir haben einen automatisierten Kompilierlauf mit anschliessenedem Test.
Dort fangen wir alles, was ein Testprogramm ausgibt ab mit:



if [ true ]; then
EXEC XXX
fi &> log


Damit hatten wir bis jetzt auch alle Seqfaults in den Logs.
Nun bin ich ueber einen Fehler gestolpert, der weit fieser ist. Im Log taucht nichts auf, keine Meldung von einem Fehler, nichts vom OS.

Wir haben uns echt gewundert was da passiert und warum der Test sich so still und leise verabschiedet, bis ich im dmesg das hier gefunden habe:



check_indexset[8577]: segfault at 0000000000000008 rip 00000000009c2108 rsp 00007fff319a7e80 error 4
initial_deploym[8756]: segfault at 0000003e000000f8 rip 0000000000cfd06b rsp 00007fffe86b59e0 error 4
initial_deploym[8776]: segfault at 0000003e000000f8 rip 0000000000cfd05b rsp 00007fff9c850b80 error 4
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
eth0: too many iterations (6) in nv_nic_irq.
check_indexset[24773]: segfault at 0000000000000008 rip 00000000009c2108 rsp 00007fff6cc38660 error 4
initial_deploym[24936]: segfault at 0000003d64697267 rip 0000000000d18de6 rsp 00007fff5f49c900 error 4
initial_deploym[24952]: segfault at 0000003d64697267 rip 0000000000d18de6 rsp 00007fff94ae4f50 error 4
check_indexset[10717]: segfault at 0000000000000008 rip 00000000009fa128 rsp 00007fffa912baf0 error 4
initial_deploym[15588]: segfault at 0000010100000101 rip 0000000001063d16 rsp 00007fff3ab8e040 error 4
initial_deploym[15605]: segfault at 0000010100000101 rip 0000000001063b66 rsp 00007fff1df3e3f0 error 4
check_indexset[15758]: segfault at 0000000000000008 rip 00000000009fa128 rsp 00007fff477ec1b0 error 4
initial_deploym[15909]: segfault at 0000010100000101 rip 0000000001063d16 rsp 00007fff35481930 error 4
initial_deploym[15926]: segfault at 0000010100000101 rip 0000000001063b66 rsp 00007fff65fa9460 error 4
check_indexset[28255]: segfault at 0000000000000008 rip 00000000009fbec8 rsp 00007fffad9df3f0 error 4
initial_deploym[28408]: segfault at 0000000000000002 rip 0000000000e2f94e rsp 00007fff00b4e410 error 4
initial_deploym[28425]: segfault at 0000000000000002 rip 0000000000e2f94e rsp 00007fff9ba9aea0 error 4


check_indexset und initial_deployment sind unsere Programme.
Was fuer ein Fehler muss auftreten, dass er hier ausgegeben wird und gar gar nichts auf der Shell. Ich bin echt ratlos.

Meine Vermutung ist fast, dass bei Boost und MPI mit der Kommunikation was schieflaeuft.

Wie kann man hier zur Quelle des Fehlers kommen?

Danke im Voraus.

navimarin

undefined
03-03-2009, 17:22
Die Meldung dürfte klar sein es ist dein NVIDIA nForce Ethernet Controller der die Füsse streckt. Siehe in den Kernel Quellen <linux>/drivers/net/forcedeth.c
Ich schätze mal zu viele Pakete

navi
03-03-2009, 19:54
Hmmm, das ist immerhin ein Anfang, vielen Dank.

Das erklärt aber nicht so ganz die Segfaults oder? Eigentlich rechnen wir in den Fällen noch nicht parallel, sprich es ist keine Kommunikation nötig. Und wenn doch, dann läuft das alles über 127.0.0.1 also das Loopback, das dürfte die Ethernet-Karte eigentlich nicht jucken.

Die Segfaults müssen ja derartig böse sein, dass der Kernel die direkt beendet? Ich weiß grad halt nicht ob ich auf Systemseite oder auf Programmseite suchen soll.

anda_skoa
06-03-2009, 00:23
Kontrolliere mal die Einstellungen bezüglich User Limits und Core Dumps in der Umgebung in der der Test läuft.

Vielleicht im Testscript mal ein



ulimit -c unlimited


machen, damit ein SegFault sicher einen Core Dump macht

Ciao,
_