Strange behaviour of ptr-ref + ptr-add(?)

22 views
Skip to first unread message

Laurent

unread,
May 10, 2020, 4:49:51 AM5/10/20
to racket-users@googlegroups.com List, Jens Axel Søgaard
Hi all,

We're trying to figure out why the last case below doesn't work on Linux, but works on MacOS. Does anyone have an explanation?
The docs suggest that _double* shouldn't be different from _double for _reading_ values.

More precisely, 

#lang racket
(require ffi/unsafe)

(define N 10)
(define pt (malloc N _double 'atomic-interior))
(for ([i (in-range N)])
  (ptr-set! pt _double* i (+ 2. i)))

;; works
(for/list ([i (in-range N)])
  (ptr-ref pt _double i))

;; works
(for/list ([i (in-range N)])
  (ptr-ref (ptr-add pt i _double) _double*))

;; doesn't work!
(for/list ([i (in-range N)])
  (ptr-ref (ptr-add pt i _double) _double))

------
Output:
(2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0)
(2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0)
(2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0)

Laurent

unread,
May 10, 2020, 4:51:20 AM5/10/20
to racket-users@googlegroups.com List, Jens Axel Søgaard
Correction:
It's not Mac vs Linux, it's Racket BC (works) vs CS (doesn't work)

Jens Axel Søgaard

unread,
May 10, 2020, 7:58:09 AM5/10/20
to Laurent, racket-users@googlegroups.com List
I can confirm that the bug is present in the latest snapshot of Racket CS on macOS.

FWIW  _double* is missing in this list, but I am not sure it whether it is supposed to be handled here.
https://github.com/racket/racket/blob/920c899ba866ce59a0387862286521e3cc1dabfb/racket/src/schemify/ptr-ref-set.rkt#L46

/Jens Axel

--
You received this message because you are subscribed to the Google Groups "Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to racket-users...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/CABNTSaFmfgTpTrWzfcxL%2BxQCqtge5Ls1eKW%2Bp0ftd%3D0q554ALg%40mail.gmail.com.


--
--
Jens Axel Søgaard

Laurent

unread,
May 10, 2020, 9:04:47 AM5/10/20
to Jens Axel Søgaard, racket-users@googlegroups.com List

Matthew Flatt

unread,
May 10, 2020, 9:05:07 AM5/10/20
to Jens Axel Søgaard, Laurent, racket-users@googlegroups.com List
Although `_double*` isn't currently meant to be handled there ---
there's no `ptr-ref/_double` specialization --- you're right that the
problem is in the `ptr-ref/double` and similar specializations in CS.

I've pushed a repair.

Thanks for the report, Laurent!
> <https://groups.google.com/d/msgid/racket-users/CABNTSaFmfgTpTrWzfcxL%2BxQCqtge
> 5Ls1eKW%2Bp0ftd%3D0q554ALg%40mail.gmail.com?utm_medium=email&utm_source=footer>
> > .
> >
>
>
> --
> --
> Jens Axel Søgaard
>
> --
> You received this message because you are subscribed to the Google Groups
> "Racket Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to racket-users...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/racket-users/CABefVgzNsmOEx3LV%3DvmV--gu3UD6k
> HZsRCfPQm0kn32Vo_ziKw%40mail.gmail.com.

Laurent

unread,
May 10, 2020, 9:10:32 AM5/10/20
to Matthew Flatt, Jens Axel Søgaard, racket-users@googlegroups.com List
Reply all
Reply to author
Forward
0 new messages