help-gnunet
[Top][All Lists]
Advanced

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

[Help-gnunet] [BUG] gnunetd crash (0.8.0pre0)


From: David Kuehling
Subject: [Help-gnunet] [BUG] gnunetd crash (0.8.0pre0)
Date: 12 Apr 2008 14:45:15 +0200
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.4

Hi,

after noticing that gnunetd 0.8.0pre0 uptime did not reach more than a
few days, I ran it from gdb this time.  After almost a week of uptime it
crashed again:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1314849872 (LWP 25232)]
put (key=0xb03f7144, value=0x0) at mysql.c:788
788       if (((ntohl (value->size) < sizeof (GNUNET_DatastoreValue))) ||

(gdb) bt
#0  put (key=0xb03f7144, value=0x0) at mysql.c:788
#1  0xb4543a1c in handleGet (sender=0xb090548c, msg=0xb03f7134)
    at routing.c:525
#2  0xb7f6dd59 in GNUNET_CORE_p2p_inject_message (sender=0xb090548c, 
    msg=0xb03f7134 "", size=80, wasEncrypted=1, session=0xb0907e58)
    at handler.c:499
#3  0xb7f6e011 in threadMain (cls=0xbf940508) at handler.c:614
#4  0xb7e380bd in start_thread () from /lib/tls/libpthread.so.0
#5  0xb7dcd01e in clone () from /lib/tls/libc.so.6

(gdb) frame 1
#1  0xb4543a1c in handleGet (sender=0xb090548c, msg=0xb03f7134)
    at routing.c:525
525       total = dstore->get (&get->key, ntohl (get->type), &routeResult, 
NULL);
(gdb) print *dstore
$5 = {put = 0xb454a550 <getSize>, get = 0xb454c980 <put>}

print *(GNUNET_SQstore_ServiceAPI*)dstore
$8 = {getSize = 0xb454a550 <getSize>, put = 0xb454c980 <put>, 
  get = 0xb454bde0 <get>, update = 0xb454a660 <update>, 
  iterateLowPriority = 0xb454bda0 <iterateLowPriority>, 
  iterateNonAnonymous = 0xb454bd60 <iterateNonAnonymous>, 
  iterateExpirationTime = 0xb454bd20 <iterateExpirationTime>, 
  iterateMigrationOrder = 0xb454bce0 <iterateMigrationOrder>, 
  iterateAllNow = 0xb454bca0 <iterateAllNow>, drop = 0xb454a340 <drop>}


I don't quite understand what happened here.  If the debugger is right,
then the 'dstore' pointer got overridden by a pointer to a
GNUNET_SQstore_ServiceAPI object.  But maybe that's just artefacts from
debugging a program compiled with -O2?  Disassembling shows, that the
crash really occured on a null-pointer dereference:

(gdb) info reg
eax            0x0      0
ecx            0x0      0
edx            0xb03f7144       -1338019516
ebx            0xb454f53c       -1269500612
esp            0xb1a0ee20       0xb1a0ee20
ebp            0xb1a0f0f8       0xb1a0f0f8
esi            0xb090548c       -1332718452
edi            0x1      1
eip            0xb454c99a       0xb454c99a <put+26>

(gdb) disas $pc
Dump of assembler code for function put:
0xb454c980 <put+0>:     push   %ebp
0xb454c981 <put+1>:     mov    %esp,%ebp
0xb454c983 <put+3>:     push   %edi
0xb454c984 <put+4>:     push   %esi
0xb454c985 <put+5>:     push   %ebx
0xb454c986 <put+6>:     sub    $0x2cc,%esp
0xb454c98c <put+12>:    mov    0xc(%ebp),%eax
0xb454c98f <put+15>:    call   0xb4548465 <__i686.get_pc_thunk.bx>
0xb454c994 <put+20>:    add    $0x2ba8,%ebx
0xb454c99a <put+26>:    mov    (%eax),%edx
0xb454c99c <put+28>:    bswap  %edx
...


David
-- 
GnuPG public key: http://user.cs.tu-berlin.de/~dvdkhlng/dk.gpg
Fingerprint: B17A DC95 D293 657B 4205  D016 7DEF 5323 C174 7D40





reply via email to

[Prev in Thread] Current Thread [Next in Thread]