Bug 7960 – link-failure optlink crash EIP=00000000

Status
RESOLVED
Resolution
MOVED
Severity
critical
Priority
P2
Component
tools
Product
D
Version
D2
Platform
x86
OS
Windows
Creation time
2012-04-21T02:31:52Z
Last change time
2020-06-10T01:37:44Z
Keywords
Optlink
Assigned to
No Owner
Creator
Benjamin Thaut

Attachments

IDFilenameSummaryContent-TypeSize
1098repro.ziprepro caseapplication/zip760166

Comments

Comment #0 by code — 2012-04-21T02:31:52Z
Created attachment 1098 repro case This crash might have multiple causes. I compile my project with: dmd -g -unittest -debug -X -Xf"Debug\thBase.json" -IC:\Users\Benjamin\Documents\d-projects\druntime\import -IC:\Users\Benjamin\Documents\d-projects\phobos -version=NOGCSAFE -version=thBase_test -deps="Debug\thBase.dep" -of"Debug\thBase.exe_cv" -map "Debug\thBase.map" -L/NOMAP -defaultlib=phobosnogc -debuglib=phobosnogc gcstub.obj -v @Debug\thBase.build.rsp Dmd launches optlink with: link.exe gcstub+"Debug\thBase","Debug\thBase.exe_cv","Debug\thBase.map",user32+kernel32/m/co/noi/NOMAP; Which causes optlink to crash with EIP=00000000 The first thing which might be a bug in dmd is, that the phobosnogc library is missing in the link command which I specified both with defaultlib and debuglib. If I manually specifiy the phobosnogc.lib in the build command dmd generates the following link command: link.exe gcstub+"Debug\thBase","Debug\thBase.exe_cv","Debug\thBase.map","phobosnogc.lib"+user32+kernel32/m/co/noi/NOMAP; Which still causes optlink to crash with EIP=00000000. If I however let dmd only compile and then manually link with: link.exe "phobosnogc"+gcstub+"Debug\thBase","Debug\thBase.exe_cv","Debug\thBase.map",user32+kernel32/m/co/noi/NOMAP; Optlink links everything fine and the executable works just as it should. So there seem to be 3 different issues here: 1) dmd does not pass the library specified with debuglib defaultlib to optlink 2) Optlink crashes with EIP=00000000 3) The order in which you pass the library files to optlink changes optlink behaviour. This issue exists with dmd 2.058 and optlink 8.00.12. See attached repro case.
Comment #1 by code — 2012-04-21T02:34:34Z
I'm going to try adding a reduced source to reproduce the issue.
Comment #2 by r.sagitario — 2013-11-23T02:35:25Z
Comment #3 by pro.mathias.lang — 2020-06-10T01:37:44Z