Skip to content

Reproducing an issue I have seen when using multi-threaded C FFI with Haskell

Notifications You must be signed in to change notification settings

sanketr/cffitest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 

Repository files navigation

This test reproduces an issue with C FFI I have seen - the number of worker threads start going up if number of C FFI threads is set beyond a threshold. On my test machine, the threshold seems to be 6. I am using ghc 7.4.1.

To reproduce the issue:

- Set nThreads in T.hs (line 51) to a high number, for example, 10. That will kick off nThreads threads in C FFI

- Compile the code (need gcc too): make

- Start the test: ./T -N3 +RTS -s 

- You will see messages being printed on console. After a few "Processed data" messages have been printed (i.e., a few timer events have executed), kill the process by sending ctrl-c. RTS will show output, listing number of worker threads. They should be higher than 12. The more iterations there are, the more worker threads there should be.

I can reproduce the segmentation fault using this simple test case if I set nThreads to a high number like 30, on Mac. On Linux, segmentation fault happens but not very often. Core dump on Mac shows output similar to below:

#0  0x00007fff9321fbca in __psynch_cvwait ()

It seems to happen in mvar callback. 

About

Reproducing an issue I have seen when using multi-threaded C FFI with Haskell

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published