#39268: g++ -O1 produces crashing code when accessing dlls via LoadLibrary()/GetProcAddress()/reinterpret_cast Open Date: 2019-05-30 19:26 Last Update: 2019-06-04 18:19 URL for this Ticket: https://osdn.net//projects/mingw/ticket/39268 RSS feed for this Ticket: https://osdn.net/ticket/ticket_rss.php?group_id=3917&tid=39268 --------------------------------------------------------------------- Last Changes/Comment on this Ticket: 2019-06-04 18:19 Updated by: comer352l Comment: Reply To keith Reply To comer352l That's why the DLL association needs to be changed "on the fly". By "on the fly", I mean ad-hoc, possibly any number of times after the class instance has been created. I understand the need to support multiple arbitrarily named DLLs, but surely any one class instance would need to establish only one DLL association? Certainly, that's how I would implement it ... a distinct class instance for each distinct DLL association, with the DLL name, (or a registry selector for that name), passed as argument to the constructor, and no method tempting a subsequent (potentially harmful) change. But that's just my opinion; it's your application, so your choice. Right, it's one DLL association per class instance. A library selection method allows switching the DLL (the used hardware) without re-creating an instance. It's not that hard to implement. ;-) --------------------------------------------------------------------- Ticket Status: Reporter: comer352l Owner: (None) Type: Issues Status: Closed Priority: 5 - Medium MileStone: (None) Component: (None) Severity: 5 - Medium Resolution: Invalid --------------------------------------------------------------------- Ticket details: I'm investigating the following crash, which occurs when accessing a dll via LoadLibrary(), getProcAddress(), reinterpret_cast: Problem signature: Problem Event Name: BEX Application Name: test.exe ... Fault Module Name: StackHash_0a9e ... Exception Offset: 0028fe9c Exception Code: c0000005 Exception Data: badc0de1 ... Additional Information 1: 0a9e Additional Information 2: 0a9e372d3b4ad19135b953a78882e789 Additional Information 3: 0a9e Additional Information 4: 0a9e372d3b4ad19135b953a78882e789 The code only crashes if it is compiled with -O1 (-O2, ...). Moving around pieces of the code seems to fix the issue. I was finally able to create some reduced example code with working / non working variants (attachment follows). -- Ticket information of MinGW - Minimalist GNU for Windows project MinGW - Minimalist GNU for Windows Project is hosted on OSDN Project URL: https://osdn.net/projects/mingw/ OSDN: https://osdn.net URL for this Ticket: https://osdn.net/projects/mingw/ticket/39268 RSS feed for this Ticket: https://osdn.net/ticket/ticket_rss.php?group_id=3917&tid=39268