Created attachment 917632 [details] core file Description of problem: The build of ocaml-ounit fails on ARM. ocamlopt.opt segfaults during the build. Unfortunately this only happens in Koji (not on my own hardware). However I was able to capture a coredump (attached). Version-Release number of selected component (if applicable): ocaml-4.02.0-0.1.git8c1e5cdf.fc22.armv7hl How reproducible: 100% (in Koji only) Steps to Reproduce: 1. Build ocaml-ounit in Rawhide. Stack trace: Program terminated with signal SIGSEGV, Segmentation fault. #0 caml_oldify_mopup () at minor_gc.c:217 217 Field (new_v, i) = f; Missing separate debuginfos, use: debuginfo-install glibc-2.19.90-26.fc21.armv7hl libgcc-4.9.0-14.fc21.armv7hl (gdb) t a a bt Thread 1 (LWP 389): #0 caml_oldify_mopup () at minor_gc.c:217 #1 0x0014c308 in caml_empty_minor_heap () at minor_gc.c:237 #2 0x0014c410 in caml_minor_collection () at minor_gc.c:276 #3 0x0014b2b0 in caml_garbage_collection () at signals_asm.c:70 #4 0x0015be1c in caml_call_gc () #5 0x00032fac in camlSelectgen__fun_2006 () #6 0x00032fac in camlSelectgen__fun_2006 () #7 0x00032fac in camlSelectgen__fun_2006 () #8 0x00032fac in camlSelectgen__fun_2006 () #9 0x00032fac in camlSelectgen__fun_2006 () #10 0x00032fac in camlSelectgen__fun_2006 () #11 0x00032fac in camlSelectgen__fun_2006 () #12 0x00032fac in camlSelectgen__fun_2006 () [etc etc]
I notice the stack is *very* deeply nested here. I will try increasing the stack ulimit as we do on ppc64.
I had it build successfully .. once .. with a huge (262144 KB) stack limit. However that wasn't repeatable. Meanwhile on my local hardware, with an identical compiler and the default stack (8192 KB) it builds fine every time.
Upstream bug: http://caml.inria.fr/mantis/view.php?id=6484
As well as filing the upstream bug, I added a workaround for the ocaml-ounit build. Using: export OCAMLFIND_COMMANDS='ocamlopt=ocamlopt' causes ocamlfind to run the bytecode version of ocamlopt instead of the native code version (ocamlopt.opt). This in no way cures the code gen bug, but it at least allows us to build the package on ARM. http://koji.fedoraproject.org/koji/taskinfo?taskID=7135008 I will leave this bug open until we've tracked down the cause of the code gen bug.
It looks as if the new Common Subexpression Elimination (CSE) step of the compiler is broken on both armv7hl and aarch64. I have therefore added a compiler patch to disable CSE entirely on these platforms. http://pkgs.fedoraproject.org/cgit/ocaml.git/tree/0001-Disable-CSE.patch
Since ounit now builds without workarounds, I am closing this bug. Fixed in: ocaml-ounit-2.0.0-4.fc22