Kernel dump in _dl_sysinfo_int80 ()

I've created a TCP client that connects to a listening server. We also saved TCP. Several times the client crashes and the kernel is dropped. Following are the kernel traces.

The problem is in the Linux kernel version Update 4, kernel 2.6.9-42.0.10.

we had two main dumps.

(gdb) where
#0 0x005e77a2 in _dl_sysinfo_int80 () from /ddisk/d303/dumps/mhx239131/ld-
linux.so.2
#1 0x006c8bd1 in connect () from /ddisk/d303/dumps/mhx239131/libc.so.6
#2 0x08057863 in connect_to_host ()
#3 0x08052f38 in open_ldap_connection ()
#4 0x0805690a in new_connection ()
#5 0x08052cc9 in ldap_open ()
#6 0x080522cf in checkHosts ()
#7 0x08049b36 in pollLDEs ()
#8 0x0804d1cd in doOnChange ()
#9 0x0804a642 in main ()

(gdb) where
#0 0x005e77a2 in _dl_sysinfo_int80 () from /ddisk/d303/dumps/mhx239131/ld-
linux.so.2
#1 0x0068ab60 in __nanosleep_nocancel ( 
from /ddisk/d303/dumps/mhx239131/libc.so.6
#2 0x080520a2 in Sleep ()
#3 0x08049ac1 in pollLDEs ()
#4 0x0804d1cd in doOnChange ()
#5 0x0804a642 in main ()

      

We tried to reproduce the problem in our environment, but we were unable.

What can cause the main file?

Please help me to avoid this situation.

Thanks, Naga

+1


source to share


2 answers


_dl_sysinfo_int80

is just a function that makes a system call in the kernel. So the main dump happens over a system call (probably the one used in connect

the first example and nanosleep

in the second example), probably because you are passing in invalid pointers.

Invalid pointers can be caused by the fact that the code that calls these functions is broken, or because the program memory is broken and corrupted elsewhere in the program.



Take a look at the two frames above (frame #2

) in the kernel dump for both examples and check the passed parameters. Unfortunately, it seems like you didn't compile with debug information, making it difficult to see them.

Also, I would suggest trying it valgrind

and see if it finds something.

+1


source


Your program is almost entirely made no coredump in any of the above locations.

Most likely, you either have multiple threads in your process (and some other thread caused the core dump), or something external caused your process to die (for example 'kill -SIGABRT <pid>'

).



If you have multiple streams, GDB 'info threads'

and 'thread apply all where'

is likely to provide additional tips.

0


source







All Articles