Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[Caml-list] Segfault in caml_oldify_local_roots.

9 views
Skip to first unread message

David Brown

unread,
Aug 31, 2006, 2:45:18 AM8/31/06
to caml...@inria.fr
Just wondering if anyone has any ideas on how I might debug this. The
problem happens with ocaml-3.09.2, and doesn't with 3.08.3. The program
uses camlzip as well as the sha1 binding pulled out of Xavier's cryptokit.

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1210538320 (LWP 24659)]
0x08059c60 in caml_oldify_local_roots () at roots.c:52
52 caml_oldify_one (*sp, sp);
(gdb) p sp
$1 = (value *) 0x1
(gdb) bt
#0 0x08059c60 in caml_oldify_local_roots () at roots.c:52
#1 0x080729f9 in caml_empty_minor_heap () at minor_gc.c:189
#2 0x08072b00 in caml_minor_collection () at minor_gc.c:222
#3 0x08059890 in caml_alloc_string (len=10) at alloc.c:77
#4 0x0805df53 in caml_create_string (len=21) at str.c:50
#5 0x0806e802 in caml_interprete (prog=0x80aa520, prog_size=125072)
at interp.c:863
#6 0x0807064b in caml_main (argv=0xbfb95954) at startup.c:414
#7 0x0805882f in main (argc=3, argv=0xbfb95954) at main.c:35

I don't see any obvious problems in either binding and was wondering if
anyone has seen anything like this?

Thanks,
David Brown

_______________________________________________
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs

David Brown

unread,
Aug 31, 2006, 4:39:35 AM8/31/06
to
David Brown wrote:

> Just wondering if anyone has any ideas on how I might debug this. The
> problem happens with ocaml-3.09.2, and doesn't with 3.08.3. The program
> uses camlzip as well as the sha1 binding pulled out of Xavier's
cryptokit.
>
> Program received signal SIGSEGV, Segmentation fault.

> 52 caml_oldify_one (*sp, sp);

I found the problem, in how I was using the Gzip module. I was doing
something like:

let fd = open_out_bin ... in
let zfd = Gzip.open_out_chan fd in
...
Gzip.close_out zfd;
close_out fd

Turns out that if I'd read it more carefully, I should have realized that
Gzip.close_out will also close the underlying handle. Apparently calling
close_out twice on the same handle messes things up enough to segfault the
garbage collector.

Dave Brown

Markus Mottl

unread,
Aug 31, 2006, 4:17:18 PM8/31/06
to David Brown
On 8/31/06, David Brown <caml-...@davidb.org> wrote:
> Turns out that if I'd read it more carefully, I should have realized that
> Gzip.close_out will also close the underlying handle. Apparently calling
> close_out twice on the same handle messes things up enough to segfault the
> garbage collector.

This is a known bug which is fixed in the current CVS-release:

http://caml.inria.fr/mantis/view.php?id=4039

Normally, closing an already closed channel a second time should not
cause any problems.

Regards,
Markus

--
Markus Mottl http://www.ocaml.info markus...@gmail.com

0 new messages