bart
bart copied to clipboard
flpmath2 unit test segfaults on Windows
Before commit 52604f9a8b11261451b5d41bc585b27433a58246, I was able to compile BART on Windows within the MSYS2 shell, but unfortunately, this commit introduced some changes that lead to segmentation fault when running the unit tests (more specifically: test_flpmath2 fails).
Does anyone know what's wrong or can give any advice on how to start debugging this error?
Here is the backtrace:
#0 add (N=2, dst=0x1fdea207600, src1=0x1fdea20f000, src2=0x1fdea04be50)
at src/num/vecops.c:200
#1 0x00007ff73caed689 in md_nary (fun=0x7ababff3a0, ptr=0x7ababff040,
str=0x20, dim=0x2, D=4294967289, C=3926177200)
at src/num/multind.c:67
#2 md_nary (fun=<optimized out>, ptr=<optimized out>, str=<optimized out>,
dim=<optimized out>, D=<optimized out>, C=<optimized out>)
at src/num/multind.c:78
#3 md_nary (fun=<optimized out>, ptr=<optimized out>, str=<optimized out>,
dim=<optimized out>, D=4294967290, C=<optimized out>)
at src/num/multind.c:63
#4 md_nary (fun=<optimized out>, ptr=<optimized out>, str=<optimized out>,
dim=<optimized out>, D=<optimized out>, C=<optimized out>)
at src/num/multind.c:78
#5 md_nary (fun=<optimized out>, ptr=<optimized out>, str=<optimized out>,
dim=<optimized out>, D=<optimized out>, C=<optimized out>)
at src/num/multind.c:63
#6 md_nary (C=<optimized out>, C@entry=3133141828, D=D@entry=3,
dim=<optimized out>, dim@entry=0x7ababff374, str=<optimized out>,
str@entry=0x7ababff2e0, ptr=<optimized out>, ptr@entry=0x7ababff1d0,
fun=<optimized out>) at src/num/multind.c:78
#7 0x00007ff73caedd48 in md_nary (fun=<optimized out>, ptr=0x7ababff1d0,
str=0x7ababff2e0, dim=<optimized out>, D=3, C=<optimized out>)
at src/num/multind.c:65
#8 md_nary (fun=<optimized out>, ptr=<optimized out>, str=<optimized out>,
dim=<optimized out>, D=<optimized out>, C=<optimized out>)
at src/num/multind.c:78
#9 md_nary (fun=<optimized out>, ptr=0x7ababff300, str=0x7ababff2e0,
dim=0x7ababff1c3, D=12, C=3) at src/num/multind.c:63
#10 md_parallel_nary (C=<optimized out>, C@entry=3, D=<optimized out>,
D@entry=4, dim=<optimized out>, dim@entry=0x7ababff394,
flags=flags@entry=3133142512, str=<optimized out>,
str@entry=0x7ababff2e0, ptr=<optimized out>, fun=<optimized out>)
at src/num/multind.c:94
#11 0x00007ff73cb0b228 in optimized_nop (N=<optimized out>,
io=<optimized out>, D=<optimized out>, dim=<optimized out>,
nstr=<optimized out>, nptr=<optimized out>, sizes=<optimized out>,
too=<optimized out>) at src/num/optimize.c:756
#12 0x00007ff73caf462a in optimized_threeop_oii (too=0x7ababff638,
sizes=0x7ababff5d0, iptr2=0x7ababff7d0, istr2=0x7ababff530,
iptr1=0x1fdea208850, istr1=0x1fdea206120, optr=0x7ababff810,
ostr=<optimized out>, dim=0x7ababff590, D=6)
at src/num/flpmath.c:147
#13 make_3op (iptr2=0x7ababff7d0, istr2=0x7ababff530, iptr1=0x1fdea208850,
istr1=0x1fdea206120, optr=0x7ababff810, ostr=<optimized out>,
dim=0x7ababff590, D=6, offset=96) at src/num/flpmath.c:268
#14 make_z3op_from_real (offset=96, D=<optimized out>, dims=<optimized out>,
ostr=0x7ababff830, optr=0x1fdea206120, istr1=0x7ababff870,
iptr1=0x1fdea206120, istr2=0x7ababff890, iptr2=0x1fdea0311b0)
at src/num/flpmath.c:466
#15 0x00007ff73cafcab5 in md_zadd2 (D=D@entry=5,
dims=dims@entry=0x7ababff7d0, ostr=ostr@entry=0x7ababff850,
optr=optr@entry=0x1fdea206120, istr1=istr1@entry=0x7ababff870,
iptr1=iptr1@entry=0x1fdea206120, istr2=istr2@entry=0x7ababff890,
iptr2=iptr2@entry=0x1fdea0311b0) at src/num/flpmath.c:1739
#16 0x00007ff73cae90e1 in test_optimized_md_zadd (out_flag=3133143184,
out_flag@entry=4294967290, in1_flag=in1_flag@entry=4294967294,
in2_flag=in2_flag@entry=4294967295, in1_same=in1_same@entry=true,
in2_same=in2_same@entry=false,
optimization_expected=optimization_expected@entry=false,
err_val=err_val@entry=9.99999997e-07) at utests/test_flpmath2.c:434
#17 0x00007ff73caeb637 in test_optimized_md_zadd2_reduce_inner3 ()
at utests/test_flpmath2.c:449
#18 call_test_optimized_md_zadd2_reduce_inner3 ()
at utests/test_flpmath2.c:454
#19 0x00007ff73dbdac72 in main (argc=<optimized out>, argv=0x1fdea204660)
at utests/utest.c:51
Additional information:
- Only one unit test causes segmentation fault:
static bool test_optimized_md_zadd2_reduce_inner3(void) { UT_ASSERT(test_optimized_md_zadd(~(1ul+4ul), ~(1ul), ~0ul, true, false, false, 1.e-6)); }
- System tests are not affected by the problem.
- Segfault doesn't occur when running unit tests from Cygwin and WSL