On Mon, Feb 1, 2021 at 1:52 PM Robert M. Münch <robert.mue...@saphirion.com> wrote: > > I know all about the problems of FP comparison, and yes I know that I need to > provide more information. What makes me suspicious is, that I have a bunch of > equivalent tests before the failing one, and all pass. I still believe in the > determinism of programs. Hence, this is all really strange. > > I run the C test code (without any Go) in GDB and the values are correctly > set. This is how the data looks before the call, setting the correct values: > > 804 YGNodeCalculateLayout(root, YGUndefined, YGUndefined, > YGDirectionLTR); > (gdb) p root.layout_.dimensions > $9 = { > _M_elems = {nan(0x400000), nan(0x400000)} > } > > and this is after the call: > > (gdb) p root.layout_.dimensions > $13 = { > _M_elems = {320, 10} > } > > I write a C wrapper function, that outputs the return value just before it's > returned and makes its way through the Go FFI. Here is the output before the > call: > > YGNodeLayoutGetWidth: 1.#QNAN0 7FC00000 > YGNodeLayoutGetHeight: 1.#QNAN0 7FC00000 > > and after the call > > YGNodeLayoutGetWidth: 320.000000 43A00000 > YGNodeLayoutGetHeight: 1000000020040877300000.000000 6258D727 > > So, why are the values before the call are different in C and the C side > within the Go program? I mean why once 0x400000 and 0x7FC00000? I would have > expected that the C code behaves the same. > And as you can see the 320 is set in both cases, but the expected 10 is a > totally screwed up floating-point value. > > Could this be an alignment problem? Does CGO add some wrapping code, which > does some strange things? > > Unfortunately, I didn't find a way, how I can enter the C code from a > debugger when using the Go binary. Looks like there is no C debug information > available.
cgo adds multiple wrapping functions. I don't know what the problem is here. I can imagine several different possibilities. Show us the code, and we won't have to guess. Thanks. Ian -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CAOyqgcXGWBcPc3%2BsRoxrsTYapg4Q5%3DQyz59E2kgHsRaca2tDyg%40mail.gmail.com.