logo       

RE: calling back to Haskell from several C threads: msg#00065

lang.haskell.glasgow.bugs

Subject: RE: calling back to Haskell from several C threads

On 12 April 2005 15:32, Bulat Ziganshin wrote:

> attached program crashes under GHC-6.2.1/mingw32 and GHC-6.4/mingw32
>
> algorithm:
>
> 1. we create several threads with forkOS
> 2. each thread calls C function
> 3. C function in each thread made several calls back to Haskell
> 4. called Haskell functions do some work with memory
> 5. all these threads ended because C functions returns
> 6. we create another several threads...
>
> after repeating these steps several times program crashes

That shouldn't happen. Thanks for sending the test program, I'll take a
look next week.

> may be, this error is due to the following from "The GHC Commentary -
> Supporting multi-threaded interoperation.htm":
>> Note: As of 20020413, the implementation of the RTS API only
>> serializes access to the allocator between multiple OS threads
>> wanting to call into Haskell (via the RTS API.) It does not
>> coordinate this access to the allocator with that of the OS worker
>> thread that's currently executing within the RTS. This weakness/bug
>> is scheduled to be tackled as part of an overhaul/reworking of the
>> RTS API itself.

That comment is out of date, I'll update it.

Cheers,
Simon


<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise