[Top][All Lists]

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

Re: [Chicken-users] process-wait

From: Jörg F . Wittenberger
Subject: Re: [Chicken-users] process-wait
Date: 01 Sep 2011 21:37:45 +0200

Hi Mario,

reproducing on *vanilla* 4.7.2 would be a challenge.
I need to mention that I'm still running from a modified scheduler
(uses llrb-trees instead of linear lists and some more fixes,
which have not yet made it into chicken core - probably since
I'm using a procedural macro expansion which is now even decpreciated).

However I just have been able to pin things down even more.
I removed all my changes so far.  Back to code which has been working
literally for years now.  Then I added this simple signal handler:

(define (process-signal/chld signum) (gc #t))

(set-signal-handler! signal/chld process-signal/chld)

Voila!  It hang, hung and hung.

(Only kill -9 would harm it, something I've not seen before too often.)

Changing (gc #t) for (gc #f) made the difference that it would hang
sometimes, as before when running all the other code.

On Sep 1 2011, Mario Domenech Goulart wrote:

Hi Jörg,

On 01 Sep 2011 19:55:17 +0200 Jörg F. Wittenberger <address@hidden> wrote:

On Sep 1 2011, address@hidden wrote:

Hope I haven't missed something you were getting at.

Not exactly.  But at this time my bet is different issue.
My hypothesis is that there's a garbage collection triggered
within the signal handler and this interferes with stack layout
or the other way around, the signal handler is run during gc.

I mean: why the hell does it work most of the time, even sustains
a killall to 50 subprocesses often enough and sometimes
just ends up looping.  (with gdb I found it in C_reclaim - no
surprise, but then it should continue at a point with the next
trace message, shouldn't it?)

Can you reproduce this behavior with 4.7.2 too? Just a wild guess, but I
wonder if the problem you are facing is something related to #668

Best wishes.

reply via email to

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