Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0007161OCamlruntime system and C interfacepublic2016-03-02 17:202016-03-24 16:45
Reportermaro 
Assigned To 
PrioritynormalSeveritycrashReproducibilityalways
StatusclosedResolutionfixed 
PlatformOSLinuxOS Version
Product Version4.03.0+dev / +beta1 
Target Version4.03.0+dev / +beta1Fixed in Version4.03.0+dev / +beta1 
Summary0007161: Ephemerons lead to crash related to weak hash tables
DescriptionIn Frama-C, we have some case studies where ephemerons lead to an assertion failure in one of our data structures, which is based on weak hash tables (Hptmap).

This happens with OCaml 4.03+beta1. After investigating via a manual git bisect, I arrived at the following commit:

e33599880d087c - [GC] make ephemerons more efficient

(Note that this commit by itself does not compile; for commits between 03ed6a0f5169304f and ec173d03d6760920, I needed to cherry-pick commit 3a470635e9e2694d1 in order to be able to compile them.)

Until the previous commit (ff8c0c83c2f10e), everything works as usual. After e33599880d087c, a few case studies trigger an assertion that should never be triggered.

This report is mainly for notification purposes; we will discuss directly with Fran├žois when he will be back to investigate the cause.
Steps To ReproduceOur case studies are based on open-source code, but require some complex settings; we can describe the required steps if needed, but initially it may be simpler to see it directly with Fran├žois.
TagsNo tags attached.
Attached Files

- Relationships
related to 0007157closed Performance regression (probably related to ephemerons) 
related to 0007162closedgarrigue Lablgtk-based GUI crashes with OCaml 4.03+beta1 

-  Notes
(0015420)
bobot (reporter)
2016-03-02 22:21

I don't know the schedule of 4.03, does the investigation of this bug can wait the 7th march?
(0015421)
bobot (reporter)
2016-03-03 01:01

Andre (@maro), can you test with https://github.com/bobot/ocaml/commit/c1801a87a6cf10efecdcbff751b27119c135f39a [^] ? Thank you.

Without the debug runtime instead of an assert the bug can cause an alive value to be removed from the hashconsing table, and so two identical values can have different tags.
(0015423)
maro (reporter)
2016-03-03 09:53

Thanks! I'm still performing some tests, but so far no more crashes :)

Unfortunately, I'm also having some (probably unrelated) crashes with the GUI, and I kind of hoped they could be related to this issue, so that both would be fixed in one shot. The crashes still happen, however, so I'll investigate them and file a separate bug if needed.

I'll report back if further tests indicate something unexpected.
(0015424)
shinwell (developer)
2016-03-03 10:17
edited on: 2016-03-24 16:41

I am hoping to merge the fix for 0007157 (which is what bobot is referring to) into the upstream 4.03 branch this morning. It might be easier to test with that.

(0015425)
maro (reporter)
2016-03-03 11:29

The GUI-related issues are almost definitely unrelated to this bug (still investigating).

I've used https://github.com/bobot/ocaml/tree/pr7157-4.03-take2 [^] in my tests, and the commits between 4.03 and the head of that branch do fix the issue in my tests.
(0015600)
doligez (administrator)
2016-03-24 16:44

Fixed by the 0007157 fix.
The GUI-related issues are 0007162.

- Issue History
Date Modified Username Field Change
2016-03-02 17:20 maro New Issue
2016-03-02 22:21 bobot Note Added: 0015420
2016-03-03 01:01 bobot Note Added: 0015421
2016-03-03 09:53 maro Note Added: 0015423
2016-03-03 10:17 shinwell Note Added: 0015424
2016-03-03 10:18 shinwell Status new => acknowledged
2016-03-03 10:18 shinwell Product Version => 4.03.0+dev / +beta1
2016-03-03 11:29 maro Note Added: 0015425
2016-03-24 16:41 doligez Note Edited: 0015424 View Revisions
2016-03-24 16:43 doligez Relationship added related to 0007157
2016-03-24 16:43 doligez Relationship added related to 0007162
2016-03-24 16:44 doligez Note Added: 0015600
2016-03-24 16:45 doligez Status acknowledged => closed
2016-03-24 16:45 doligez Resolution open => fixed
2016-03-24 16:45 doligez Fixed in Version => 4.03.0+dev / +beta1
2016-03-24 16:45 doligez Target Version => 4.03.0+dev / +beta1
2017-02-23 16:43 doligez Category OCaml runtime system => runtime system
2017-03-03 17:45 doligez Category runtime system => runtime system and C interface


Copyright © 2000 - 2011 MantisBT Group
Powered by Mantis Bugtracker