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