Crash with valgrind output.

Ben Greear greearb
Wed Feb 16 09:48:00 PST 2011


I have a reproducible case where the supplicant crashes and dumps
core whenever I stop my app (which has previously started supplicant).

I'm having a bit of trouble figuring out how this could crash
as it does and give so little useful valgrind info...

It appears 'eloop' is totally corrupt, but it's a global
static struct...so not sure how that could come about.

I'm going to keep poking at this, but suggestions are
welcome...

Valgrind output:

==8327== For counts of detected and suppressed errors, rerun with: -v
==8327== ERROR SUMMARY: 77 errors from 55 contexts (suppressed: 0 from 0)
==8327== Invalid read of size 4
==8327==    at 0x80530A8: eloop_handle_signal (eloop.c:413)
==8327==    by 0x43899387: ??? (in /lib/libc-2.13.so)
==8327==    by 0x807957D: wpa_supplicant_run (wpa_supplicant.c:2499)
==8327==    by 0x8082935: main (main.c:274)
==8327==  Address 0x4024003 is not stack'd, malloc'd or (recently) free'd
==8327==
==8327==
==8327== Process terminating with default action of signal 11 (SIGSEGV): dumping core
==8327==  Access not within mapped region at address 0x4024003
==8327==    at 0x80530A8: eloop_handle_signal (eloop.c:413)
==8327==    by 0x43899387: ??? (in /lib/libc-2.13.so)
==8327==    by 0x807957D: wpa_supplicant_run (wpa_supplicant.c:2499)
==8327==    by 0x8082935: main (main.c:274)
==8327==  If you believe this happened as a result of a stack
==8327==  overflow in your program's main thread (unlikely but
==8327==  possible), you can try to increase the size of the
==8327==  main thread stack using the --main-stacksize= flag.
==8327==  The main thread stack size used in this run was 8388608.
==8327==

And gdb output:

Program terminated with signal 11, Segmentation fault.
#0  eloop_handle_signal (sig=15) at ../src/utils/eloop.c:413
413	../src/utils/eloop.c: No such file or directory.
	in ../src/utils/eloop.c
(gdb) bt
#0  eloop_handle_signal (sig=15) at ../src/utils/eloop.c:413
#1  <signal handler called>
#2  0x4384d852 in ?? ()
#3  0x0807957e in wpa_supplicant_run (global=0x403a108) at wpa_supplicant.c:2499
#4  0x08082936 in main (argc=68, argv=0xbe97a084) at main.c:274
(gdb) frame 0
#0  eloop_handle_signal (sig=15) at ../src/utils/eloop.c:413
413	in ../src/utils/eloop.c
(gdb) print i
$1 = 9206
(gdb) print signal_count
No symbol "signal_count" in current context.
(gdb) print eloop
$2 = {max_sock = 252936, readers = {count = 0, table = 0x0, changed = 7168}, writers = {count = -1929379328, table = 0x4000067,
     changed = 0}, exceptions = {count = 83496960, table = 0x121408, changed = 0}, timeout = {next = 0x0, prev = 0x1c00},
   signal_count = 855638528, signals = 0x40000a3, signaled = 1, pending_terminate = 84684800, terminate = 25864,
   reader_table_changed = 0}
(gdb)

-- 
Ben Greear <greearb at candelatech.com>
Candela Technologies Inc  http://www.candelatech.com




More information about the Hostap mailing list