From m@echler @ending from @t@t@m@th@ethz@ch  Fri Aug 31 16:00:07 2018
From: m@echler @ending from @t@t@m@th@ethz@ch (Martin Maechler)
Date: Fri, 31 Aug 2018 16:00:07 +0200
Subject: [Rd] Segfault when performing match on POSIXlt object
In-Reply-To: <CAA9Rc3PFDr_Rn9toAcwpp5MOvcdEbGMgfDnc7n6PFK+cHxZYAw@mail.gmail.com>
References: <CAA9Rc3PFDr_Rn9toAcwpp5MOvcdEbGMgfDnc7n6PFK+cHxZYAw@mail.gmail.com>
Message-ID: <23433.18919.859126.521094@stat.math.ethz.ch>

>>>>> Marco Giuliano 
>>>>>     on Fri, 31 Aug 2018 08:53:02 +0200 writes:

    > Hi All, I found a possible unexpected behavior when
    > performing match/%in% on POSIXlt objects, e.g. :

    >   d <- as.POSIXlt('2018-01-01')

    >   # match(<anything>,<POSIXlt>) --> segfault match(0,d)

    >   # consequently also this fails : 0 %in% d

    > REPORTED ERROR ON LINUX: *** caught segfault *** address
    > 0x16dc2, cause 'memory not mapped'

    > Verified on 3.5.0 on linux, 3.5.1 on Windows.

Confirmed (Linux, I think all version >= 3.4.0, but not in R
3.3.3 (or earlier, presumably).

Note the segfault happens inspite of the match_transform() utility
which explicitly checks for "POSIXlt" and the code comment which
says that "POSIXlt" should have been transformed to character, 
but seems to fail in recent versions of R.

    > I think this could be a bug, since even if that match
    > operation makes no sense, the R session is not supposed to
    > crash with segmentation fault, but rather throw an
    > exception.

Definitely.  It is a bug.

    > Thanks in advance

Thank you for reporting!

Martin Maechler, ETH Zurich



[Rd] Segfault when performing match on POSIXlt object
Martin Maechler