|
|
Reporter | pbone | |
---|
Assigned To | pbone | |
---|
Priority | high | Severity | major | Reproducibility | sometimes |
---|
Status | resolved | Resolution | fixed | |
---|
Platform | x86_64 | OS | Debian Linux | OS Version | jessie or sid |
---|
Product Version | | |
---|
Target Version | | Fixed in Version | | |
---|
|
|
Summary | 0000334: Low level C parallel grades crash with libc6 > 2.19.x and newer Intel processors |
---|
Description | Intel's latest processors include some transactional memory support instructions (TSX). These can be used to implement lock free data structures and can also be used to implement more traditional locking primitives such as mutexes. Specifically new versions of eglibc use this to implement lock elision for pthreads mutexes: http://lwn.net/Articles/534758/ If you have a supported processor eglibc will use this by default.
There has been a dormant bug in Mercury (or possibly Boehm GC) that now shows up since I upgraded to libc6 2.19.1, I use a Intel i7-4770 which has the TSX feature and now some parallel Mercury programs crash. A GP fault is thrown by some code in the pthreads library. |
---|
Steps To Reproduce | Using an Intel i7-4770 processor (without a K suffix), and eglibc 2.19.1 build Mercury with GRADE=asm_fast.gc.par.stseg in the Mmake.params file (I was doing this to test parallel profiling). The resulting compiler will intermittently crash. |
---|
Additional Information | Mercury is not the only program to have a bug like this show up with the new libc. libtirpc has a similar problem. If you use Debian testing and NFS (or anything with portmap), then upgrading libtirpc from sid will fix this. |
---|
Tags | No tags attached. |
---|
|
|
Attached Files |
|
---|