|View Issue Details|
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0000161||mercury||Bug||public||2010-09-08 16:45||2013-05-21 16:51|
|Priority||normal||Severity||major||Reproducibility||have not tried|
|Target Version||Fixed in Version|
|Summary||0000161: Calling io.seen/2 twice in a row can crash the runtime with a segfault.|
|Description||The following program crashes the runtime with a segfault.|
:- module main.
:- import_module io.
:- pred main(io::di, io::uo) is det.
main(!IO) :- seen(!IO), seen(!IO).
This was reported via the #mercury IRC channel on the Freenode IRC network.
I'm waiting for the user to tell me what version of Mercury they're using and which grade they're using. I havn't attempted to reproduce this myself.
|Tags||No tags attached.|
With rotd-2013-05-17, in the hlc.gc grade (on Mac OS X 10.8) it gives me:
Uncaught Mercury exception:
io_error("error closing file: Bad address")
which seems fine. Did the original user ever get back to you about what they were using?
I do however get the seg fault in both asm_fast.gc and hlc.gc grades on x86_64 Linux.
The right fix here IMO, is to change mercury_close so that it checks that the file pointer it is attempting
to close is non-NULL before attempting to close it. (After calling MR_CLOSE the first time, we NULL out
the file pointer, so this should be enough to fix the multiple io.seen/2 case.)
|I don't remember, or was never told what version/grade the user was using. In any case I agree with your conclusion.|
|I'll add a fix for this sometime during this week.|
|I've committed a fix that avoids the segmentation fault that occurs when closing the same file stream multiple times (the actual issue here). There appears to be in an issue on the asm_fast.gc grades on Linux with handling the exception that now occurs. I am still investigating this.|
|2010-09-08 16:45||pbone||New Issue|
|2011-02-08 16:28||pbone||Status||new => assigned|
|2011-02-08 16:28||pbone||Assigned To||=> pbone|
|2013-05-17 16:49||juliensf||Note Added: 0000514|
|2013-05-17 16:51||juliensf||Note Added: 0000515|
|2013-05-17 17:10||juliensf||Note Added: 0000516|
|2013-05-18 12:51||pbone||Note Added: 0000517|
|2013-05-19 17:59||juliensf||Note Added: 0000519|
|2013-05-19 17:59||juliensf||Assigned To||pbone => juliensf|
|2013-05-21 16:51||juliensf||Note Added: 0000523|