[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Chicken-meisters] Restart of apache required
From: |
Peter Bex |
Subject: |
Re: [Chicken-meisters] Restart of apache required |
Date: |
Wed, 11 May 2011 13:25:25 +0200 |
User-agent: |
Mutt/1.4.2.3i |
On Wed, May 04, 2011 at 05:57:16AM -0400, Felix wrote:
> > switching to #<thread: thread181594>
> > #<thread: thread181594> blocks for timeout -2147409012.0
> > ##sys#thread-block-for-timeout!: invalid timeout
> > []
> > ...more...
> > <CALL CHAIN HERE>
> >
> > What's going on?
>
> A negative timeout value.
Not just negative, but it's a flonum, too! That's because this is about
twice as large as the most positive fixnum on call-cc:
#;1> (- (* most-positive-fixnum 2) 2147409012.0)
74634.0
That indicates a possible overflow to me.
> This seems to happen from time to time, I
> don't know the reason for this. The places where this procedure is
> called are the srfi-18 API functions, so this already is an invalid
> argument passed to library functions. There are some lowlevel eggs
> like sendfile that call these internal blocking-procedures, IIRC, and
> there also incorrect timeout-argument values are possible.
AFAICT, sendfile has the following idiom *everywhere* it sleeps:
(when (write-timeout)
(##sys#thread-block-for-timeout!
##sys#current-thread
(+ (current-milliseconds) (write-timeout))))
Is this correct? As far as I can see, because write-timeout is
a parameter it should be thread-local so there should be no race
condition between the "when" check and the block-for-timeout call.
Is it possible that after a program is running for a long time,
current-milliseconds produces an overflow?
Turns out this can happen, after hacking a bit:
address@hidden:~$ gdb /usr/local/chickens/chicken-safer-scheduler-debug/bin/csi
(gdb) run
Starting program: /usr/local/chickens/chicken-safer-scheduler-debug/bin/csi
CHICKEN
(c)2008-2010 The Chicken Team
(c)2000-2007 Felix L. Winkelmann
Version 4.6.0rc1 (safer-scheduler)
linux-unix-gnu-x86 [ manyargs dload ptables ]
compiled 2010-09-18 on hd-t1179cl (Linux)
#;1> ^C
Program received signal SIGINT, Interrupt.
0xb7f3e424 in __kernel_vsyscall ()
(gdb) set C_startup_time_seconds=0
(gdb) c
Continuing.
(current-milliseconds)
-559319127.0
Of course this is an extreme case and I can't seem to get it to overflow
when I plug in values that are more realistic (like 3600*24*56, the number
of seconds between March 9th (date of previous restart) and May 4th).
On the other hand, when I call current-seconds, it returns a greater
number (is that right?) and it does go into flonum mode immediately
on startup:
#;2> (current-seconds)
1305112661.0
I don't immediately see anywhere that's being used though.
Cheers,
Peter
--
http://sjamaan.ath.cx
--
"The process of preparing programs for a digital computer
is especially attractive, not only because it can be economically
and scientifically rewarding, but also because it can be an aesthetic
experience much like composing poetry or music."
-- Donald Knuth
- [Chicken-meisters] Restart of apache required, Christian Kellermann, 2011/05/04
- Re: [Chicken-meisters] Restart of apache required, Peter Bex, 2011/05/04
- Re: [Chicken-meisters] Restart of apache required,
Peter Bex <=
- Re: [Chicken-meisters] Restart of apache required, Felix, 2011/05/11
- Re: [Chicken-meisters] Restart of apache required, Peter Bex, 2011/05/11
- Re: [Chicken-meisters] Restart of apache required, Mario Domenech Goulart, 2011/05/11
- Re: [Chicken-meisters] Restart of apache required, Peter Bex, 2011/05/11
- Re: [Chicken-meisters] Restart of apache required, Mario Domenech Goulart, 2011/05/11
- Re: [Chicken-meisters] Restart of apache required, Jim Ursetto, 2011/05/11
- Re: [Chicken-meisters] Restart of apache required, Felix, 2011/05/12
- Re: [Chicken-meisters] Restart of apache required, Jim Ursetto, 2011/05/12
Re: [Chicken-meisters] Restart of apache required, Christian Kellermann, 2011/05/04