Seg fault stats::runmed

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Seg fault stats::runmed

Hilmar Berger-4
Dear all,

I just found this issue:

dd1 = c(rep(NaN,82), rep(-1, 144), rep(1, 74))
xx = runmed(dd1, 21)

-> R crashes reproducibly in R 3.4.3, R3.4.4 (Ubuntu 14.04/Ubuntu 16.04)

With GDB:
Program received signal SIGSEGV, Segmentation fault.
swap (l=53, r=86, window=window@entry=0xc59308,
outlist=outlist@entry=0x12ea2e8, nrlist=nrlist@entry=0x114fdd8,
print_level=print_level@entry=0) at Trunmed.c:64
64        outlist[nr/* = nrlist[l] */] = l;

Valgrind also reports access to unallocated memory and/or writing past
the end of the heap.

The crash does not happen if the order is changed:

dd2 = c(rep(-1, 144), rep(1, 74), rep(NaN,82))
xx = runmed(dd2,21)

Error in if (a < b) { : missing value where TRUE/FALSE needed

Best regards,
Hilmar

--
Dr. Hilmar Berger, MD
Max Planck Institute for Infection Biology
Charitéplatz 1
D-10117 Berlin
GERMANY

Phone:  + 49 30 28460 430
Fax:    + 49 30 28460 401
 
E-Mail: [hidden email]
Web   : www.mpiib-berlin.mpg.de

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Reply | Threaded
Open this post in threaded view
|

Re: Seg fault stats::runmed

Martin Maechler
>>>>> Hilmar Berger
>>>>>     on Fri, 5 Oct 2018 10:17:49 +0200 writes:

    > Dear all, I just found this issue:

    > I just found this issue:

    > dd1 = c(rep(NaN,82), rep(-1, 144), rep(1, 74))
    > xx = runmed(dd1, 21)

    >> R crashes reproducibly in R 3.4.3, R3.4.4 (Ubuntu 14.04/Ubuntu 16.04)

and also in the latest development version (we call "R-devel").

THank you very much, Hilmar!

I will have a look, to ensure missing values (incl NaN) are
handled propertly.

Martin

--
Martin Maechler
ETH Zurich and R Core Team

    > With GDB:
    > Program received signal SIGSEGV, Segmentation fault.
    > swap (l=53, r=86, window=window@entry=0xc59308,
    > outlist=outlist@entry=0x12ea2e8, nrlist=nrlist@entry=0x114fdd8,
    > print_level=print_level@entry=0) at Trunmed.c:64
    > 64        outlist[nr/* = nrlist[l] */] = l;

    > Valgrind also reports access to unallocated memory and/or writing past
    > the end of the heap.

    > The crash does not happen if the order is changed:

    > dd2 = c(rep(-1, 144), rep(1, 74), rep(NaN,82))
    > xx = runmed(dd2,21)

    > Error in if (a < b) { : missing value where TRUE/FALSE needed

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel