monit-dev
[Top][All Lists]
Advanced

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

Re: SIGSEGV problem


From: Martin Pala
Subject: Re: SIGSEGV problem
Date: Fri, 15 Aug 2003 08:02:23 +0200
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030714 Debian/1.4-2

Jan-Henrik Haukeland wrote:

Christian Hopp <address@hidden> writes:

On Thu, 14 Aug 2003, Jan-Henrik Haukeland wrote:

I ran a fast test with efence and managed to reproduce the SIGSEGV (it
may be more). SIGSEGV is thrown in process/common.c:connectchild()
from this line:

 parent->children[parent->children_num - 1] = (struct myprocesstree *) child;


From my gdb/efence session:

 Program received signal SIGSEGV, Segmentation fault.
 [Switching to Thread 1024 (LWP 1269)]
 0x0805b340 in connectchild (parent=0x41143fa0, child=0x41144740)
     at process/common.c:232

 (gdb) p *parent->children
 Cannot access memory at address 0x41365fcc

 (gdb) p parent->children[parent->children_num - 1]
 Cannot access memory at address 0x41365ffc

I suspect it's caused by trying to access something outside the
array. Maybe Christian can debug this since it's his code :) I'm of to
bed, it's late.
Strange... I just had a look at the code... and it IMHO impossible to
access memory which is not allocated at this position!

I do a xcalloc of parent->children_num entities of pointers and it has to
be possible to access the last one (parent->childen_num - 1)... or?  Or is
it being deleted while this happens... somekind of race condition???

I think it must have been a race condition of some sort. The strange
thing is that I cannot reproduce the problem after I added the signal
block code. Maybe that was it and it is fixed!? Do any of you get any
more SIGSEGV now? Martin?

It seems you've fixed the main reason :)

I did 2170 tests of which none failed.

Martin





reply via email to

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