View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
---|---|---|---|---|---|---|---|---|---|
0000294 | mercury | Bug | public | 2013-07-24 18:23 | 2013-09-29 15:12 | ||||
Reporter | pbone | ||||||||
Assigned To | pbone | ||||||||
Priority | normal | Severity | major | Reproducibility | always | ||||
Status | resolved | Resolution | fixed | ||||||
Product Version | |||||||||
Target Version | Fixed in Version | ||||||||
Summary | 0000294: GCC 4.6 and 4.7 break asm_fast.par grades | ||||||||
Description | The mandelbrot program crashes when compiled with gcc 4.6 or 4.7. I have not tested 4.8. 4.5 works. I found that passing -fno-reorder-functions to GCC avoids the problem. I don't yet know why. | ||||||||
Tags | No tags attached. | ||||||||
Attached Files |
|
Notes | |
pbone (administrator) 2013-07-24 18:24 |
I have uploaded a patch that I started working on. |
juliensf (administrator) 2013-08-23 15:33 |
Hi Paul, Some comments on your patch: in the configure script, you should be able to use the value of C_COMPILER_TYPE to tell whether to pass -fno-reorder-functions or not to the C compiler or not. (The value of that variable also encodes the version of the C compiler.) For now I would suggest disabling the option for GCC version 4.6 and onwards. This bug should be kept open until we know *why* -freorder-functions is breaking the .par grades. |
pbone (administrator) 2013-09-01 14:43 |
Notes on why this bug may be occurring: The program has to use higher order code but doesn't need to contain a parallel conjunction. The effected grade has to be a low-level C par grade, I've only tested with stack segments, so I don't know if disabling them will help. I tested a few of the low-level C grades: asm_fast.gc: Works asm_fast.gc.par.seg: Broken asm_fast.gc.seg: Broken reg.gc.par.seg: Broken none.gc.par.seg: Works So, the bug is independent of GC and parallel conjunction. It does require higher order code, a parallel grade, and gcc global registers. |
juliensf (administrator) 2013-09-01 16:07 |
Is this on x86_64, i686 or both? Also, is the test case also broken on reg.gc.steg? |
pbone (administrator) 2013-09-01 17:46 |
x86_64, I havn't tested the others. Also regarding reg.gc.par.stseg, this doesn't work in older versions of GCC 4.6 either, so there are at least two different bugs, and until I understand both of them I can't say if the "reg" grades are affected or not. So I can't tell if this is GCC global registers or some other option. |
pbone (administrator) 2013-09-03 16:30 |
I've now also tested asm_fast.gc.stseg, which does not have the bug. |
pbone (administrator) 2013-09-29 15:12 |
Fixed in a8397086be733a27d73fe1b0f14b5aa92487adb4 I'm leaving the bug open as we still do not know the cause. |
Issue History | |||
Date Modified | Username | Field | Change |
---|---|---|---|
2013-07-24 18:23 | pbone | New Issue | |
2013-07-24 18:24 | pbone | File Added: patch | |
2013-07-24 18:24 | pbone | Note Added: 0000556 | |
2013-08-22 22:28 | pbone | Assigned To | => pbone |
2013-08-22 22:28 | pbone | Status | new => assigned |
2013-08-23 15:33 | juliensf | Note Added: 0000558 | |
2013-09-01 14:43 | pbone | Note Added: 0000559 | |
2013-09-01 16:07 | juliensf | Note Added: 0000560 | |
2013-09-01 17:46 | pbone | Note Added: 0000561 | |
2013-09-03 16:30 | pbone | Note Added: 0000563 | |
2013-09-29 15:12 | pbone | Note Added: 0000569 | |
2013-09-29 15:12 | pbone | Status | assigned => resolved |
2013-09-29 15:12 | pbone | Resolution | open => fixed |