|
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 (https://bugs.call-cc.org/ticket/668). Best wishes. Mario
[Prev in Thread] | Current Thread | [Next in Thread] |