|
[ ghc-Bugs-1235728 ] unsafeInterleaveIO + Ctrl-C/killThread related segfaul: msg#00068lang.haskell.glasgow.bugs
Bugs item #1235728, was opened at 2005-07-11 00:41 Message generated for change (Comment added) made by remit You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=108032&aid=1235728&group_id=8032 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Runtime System Group: None Status: Open Resolution: None Priority: 5 Submitted By: Remi Turk (remit) Assigned to: Nobody/Anonymous (nobody) Summary: unsafeInterleaveIO + Ctrl-C/killThread related segfault Initial Comment: [copy-pasting my original mail (http://www.haskell.org/pipermail/glasgow-haskell-bugs/2005-June/005235.html)] Good evening, I just stumbled across a segfault caused when running the following small program. (During an attempt to implement single-assignment variables.) > module Main where > > import Control.Concurrent > import System.IO.Unsafe (unsafeInterleaveIO) > > main = do > v <- newEmptyMVar > a <- unsafeInterleaveIO (readMVar v) > t <- forkIO (print a) > threadDelay (1000*1000) > killThread t > forkIO (print a) > putMVar v () The crucial part about it seems to be the interruption of the lazy IO. Typing Ctl-c while running the first "print a" by hand from ghci instead of the forkIO+killThread doesn't change behaviour: Prelude System.IO.Unsafe Control.Concurrent> v <- newEmptyMVar Prelude System.IO.Unsafe Control.Concurrent> a <- unsafeInterleaveIO (readMVar v) Prelude System.IO.Unsafe Control.Concurrent> print a Interrupted. Prelude System.IO.Unsafe Control.Concurrent> forkIO (print a) Prelude System.IO.Unsafe Control.Concurrent> putMVar v () zsh: segmentation fault (core dumped) ghci Both 6.4 and 6.2.1 crash when running main from ghci. When running it as a compiled executable everything is fine. Although I'm pretty sure I've seen 6.2.1 crashing on it when run with -e main, I cannot reproduce it anymore. 6.4 certainly happily runs it with -e main. (A serious lack of sleep the last week may play a role too.. :-/) Whether the module is compiled before being loaded into ghci has no effect. Core-dumps etc can of course be sent if necessary. Good night, Remi ---------------------------------------------------------------------- >Comment By: Remi Turk (remit) Date: 2005-07-11 00:49 Message: Logged In: YES user_id=26642 A few new datapoints. Using -threaded, 6.2.1 compiled executables still survive, while 6.4 dies. % ghc-6.4 -no-recomp foo.hs % ./a.out % ghc-6.2.1 -no-recomp foo.hs % ./a.out % ghc-6.4 -no-recomp -threaded foo.hs % ./a.out zsh: segmentation fault ./a.out % ghc-6.2.1 -no-recomp -threaded foo.hs % ./a.out % Also, the first forkIO can be changed into forkOS without changing (crashing)behaviour, the second cannot. Oh, and I won't be upset if this one won't be fixed for 6.4.1 ;) ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=108032&aid=1235728&group_id=8032
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | [ ghc-Bugs-1235728 ] unsafeInterleaveIO + Ctrl-C/killThread related segfault, SourceForge.net |
|---|---|
| Next by Date: | [ ghc-Bugs-1232660 ] Warning and glagow-exts instead of glasgow-exts, SourceForge.net |
| Previous by Thread: | [ ghc-Bugs-1235728 ] unsafeInterleaveIO + Ctrl-C/killThread related segfault, SourceForge.net |
| Next by Thread: | [ ghc-Bugs-1235728 ] unsafeInterleaveIO + Ctrl-C/killThread related segfault, SourceForge.net |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |