bart icon indicating copy to clipboard operation
bart copied to clipboard

flpmath2 unit test segfaults on Windows

Open hakkelt opened this issue 4 years ago • 1 comments

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

hakkelt avatar Jun 14 '21 11:06 hakkelt

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

hakkelt avatar Jun 15 '21 15:06 hakkelt