dotgnu-general
[Top][All Lists]
Advanced

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

[DotGNU]Seg Fault in the Dgee.


From: Chris Smith
Subject: [DotGNU]Seg Fault in the Dgee.
Date: Wed, 9 Jul 2003 11:18:19 +0100
User-agent: KMail/1.4.3

I've discovered that after performing the IL cleanup code in the dgee pnetVM 
and going back to waiting for further requests, a second thread 'comes alive' 
and kills the process (itself) off.

Fortunately Goldwater starts the process back up, but we're getting less than 
traditional CGI performance now :o/

... cleanup code called somewhere round here ...

[pid 28453] write(3, "2003/07/08 22:01:45 28453:400:/D"..., 63) = 63
[pid 28453] rt_sigprocmask(SIG_BLOCK, ~[], [RTMIN 43], 8) = 0
[pid 28453] semop(1015809, 0xbffff6c0, 1) = 0
[pid 28453] semop(1015809, 0xbffff6c0, 1) = 0
[pid 28453] semop(1015809, 0xbffff6e0, 1) = 0
[pid 28453] semop(1015809, 0xbffff6e0, 1) = 0
[pid 28453] rt_sigprocmask(SIG_SETMASK, [RTMIN 43], NULL, 8) = 0
[pid 28453] write(1, "-31,-31,-31,-31,-31,-31,-31,-31,"..., 123) = 123
[pid 28453] rt_sigprocmask(SIG_BLOCK, ~[], [RTMIN 43], 8) = 0
[pid 28453] semop(1015809, 0xbffff720, 1) = 0
[pid 28453] semop(1015809, 0xbffff720, 1) = 0
[pid 28453] rt_sigprocmask(SIG_SETMASK, [RTMIN 43], NULL, 8) = 0

... DGpnetVM goes off and blocks waiting for a new request ...

[pid 28453] msgrcv( <unfinished ...>
[pid 28463] <... poll resumed> [{fd=7, events=POLLIN}], 1, 2000) = -1 EINTR 
(Interrupted system call)

... Is this a child thread ???? ...
[pid 28463] --- SIGRT_1 (Real-time signal 1) ---
[pid 28463] sigreturn()                 = ? (mask now ~[TRAP KILL STOP])
[pid 28463] getppid()                   = 28453
[pid 28463] wait4(-1, [WIFSIGNALED(s) && WTERMSIG(s) == SIGSEGV], 
WNOHANG|__WCLONE, NULL) = 28464
[pid 28463] modify_ldt(0x1, 0x8280ecc, 0x10) = 0
[pid 28463] munmap(0x4057d000, 8388608) = 0
[pid 28463] kill(28453, SIGSEGV)        = 0               <<< **  NEUGH! **
[pid 28453] <... msgrcv resumed> 17170446, {1, 
"\0\0\0\0\1\0\0\0\300\1\0\0\377\377\377\377\1\0\0\0\n\200"...}, 16500, 
-805306367, 0) = -1 EINTR (Interrupted system call)
[pid 28463] _exit(0)                    = ?
--- SIGSEGV (Segmentation fault) ---


We've come up with a much better DGpnetVM design that spawns a thread in C to 
contain the pnet runtime.  The IL code running in the pnet runtime will make 
an internal call to some special DGEE code that will block and wait for 
request data.  The parent thread waits for external requests and passes them 
to the child pnet engine thread when necessary.
This allows me to do a level of webservice bytecode caching etc and is 
therefore much better.
To reduce memory consumption, the child pnet thread will be restarted 
frequently.
[These are not pnet threads I'm talking about here]

However I'd like to get a handle on what is causing the segv at the moment as 
it may be a while before the new pnetvm code is in place.

tum, rhys I'll send you pnetvm.c seperately - or get it from the dgee cvs.

Cheers,
Chris



reply via email to

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