• simonmar's avatar
    [project @ 2003-12-22 16:27:10 by simonmar] · 354a661d
    simonmar authored
    Fix threaded RTS problem that is currently causing the conc007 test to
    loop indefinitely.  Comment from the source regarding this change:
    /* Major bogosity:
     * In the threaded RTS, we can't set the virtual timer because the
     * thread which has the virtual timer might be sitting waiting for a
     * capability, and the virtual timer only ticks in CPU time.
     * So, possible solutions:
     * (1) tick in realtime.  Not very good, because this ticker is used for
     *     profiling, and this will give us unreliable time profiling
     *     results.  Furthermore, this requires picking a single OS thread
     *     to be the timekeeper, which is a bad idea because the thread in
     *     question might just be making a temporary call into Haskell land.
     * (2) save/restore the virtual timer around excursions into STG land.
     *     Sounds great, but I tried it and the resolution of the virtual timer
     *     isn't good enough (on Linux) - most of our excursions fall
     *     within the timer's resolution and we never make any progress.
     * (3) have a virtual timer in every OS thread.  Might be reasonable,
     *     because most of the time there is only ever one of these
     *     threads running, so it approximates a single virtual timer.
     *     But still quite bogus (and I got crashes when I tried this).
     * For now, we're using (1), but this needs a better solution. --SDM
Itimer.c 5.32 KB