calling back to Haskell from several C threads

Simon Marlow simonmar at microsoft.com
Thu Apr 14 15:51:51 EDT 2005


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



More information about the Glasgow-haskell-bugs mailing list