digitalmars.D.bugs - [Issue 21072] New: Segfault reassigning a variable to result of
- d-bugmail puremagic.com (43/43) Jul 24 2020 https://issues.dlang.org/show_bug.cgi?id=21072
https://issues.dlang.org/show_bug.cgi?id=21072 Issue ID: 21072 Summary: Segfault reassigning a variable to result of external C function Product: D Version: D2 Hardware: x86_64 OS: Linux Status: NEW Severity: normal Priority: P1 Component: dmd Assignee: nobody puremagic.com Reporter: xdrie tuta.io Created attachment 1800 --> https://issues.dlang.org/attachment.cgi?id=1800&action=edit source and binaries to reproduce full source with binaries is attached. one of them depends on an external C library (i am working on the bindings), and a prebuilt version is attached, and below are links to the source with build instructions (very few dependencies, just OpenGL and X11, just a simple makefile). source of packages: - bindings: https://github.com/xdrie/re-raylib-d - original library (tagged version): https://github.com/xdrie/raylib/releases/tag/v3.0.0_patch_1 this is the code in `app.d` that causes a segmentation fault on the last line of main. ``` import raylib; void main() { auto transform_mat = raymath.MatrixIdentity(); auto top_left = Vector3(1, 1, 0); top_left = raymath.Vector3Transform(top_left, transform_mat); } ``` on the last line, if we assign to a variable, like: `auto f = raymath.Vector3Transform(top_left, transform_mat);` then it no longer segfaults. dmd generates a segfaulting binary; both ldc and gdc generate binaries that work as expected. this is why i think this is very likely a dmd bug. --
Jul 24 2020