[erlang-questions] Re: how do I do the equivalent of ets:tab2list(timer_tab) for BIF timers

Per Hedeland per@REDACTED
Tue Dec 7 15:23:57 CET 2010


Matthias Lang <matthias@REDACTED> wrote:
>
>In short: A bug in the linux kernel on Au1000 MIPS CPUs causes
>       Erlang's timers and timeouts to go haywire, sometimes.
>       Most likely, nobody but me is affected. Erlang is not the problem.
>
>Longer version follows as a reply to my own post. It's only of
>interest to the curious.

Hm, we actually recently had a report that the VM (R13B03) aborted on
startup with "Unexpected behaviour from operating system high resolution
timer" - this is from erl_time_sup.c, and (on Linux) the only reason I
can see is that clock_gettime(CLOCK_MONOTONIC) went backwards (which
should *never* happen, of course).

>The root cause was a concurrency/locking problem: a missing lock in an
>interrupt routine which meant that a call to clock_gettime() at the
>"wrong" moment could read junk.

So was this specific to the above CPU? I believe the system where the
abort happened was x86_64 (running CentOS 5.3).

--Per Hedeland


More information about the erlang-questions mailing list