test: Disable dshell/dll.d test on OSX #14208
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When running the dll test, the following warning is written to console.
This is correct, as when you link druntime into a shared library on OSX, all the symbols of libphobos.a are copied into the DSO/image for that library. Then, linking an executable with both libphobos and that library means there are now two copies of all globals present at run-time.
i.e:
Unlike ELF DSOs, where at run-time these are resolved as-if the symbol is weak. On OSX, depending on which DSO/image a referencing function is resolved/called from, you could get either version of these symbols. i.e:
Thread.initLocks()is called fromtestdll.exe, initializing theThread.slock@1000399e8handle in that image, butthread_suspendAllis called frommydll.so, which tries to use the uninitializedThread.slock@000057c58and throws an Error as a result.Until DMD sorts out symbol emission to avoid this (GDC annotates these
__gsharedvariables with@weakIIRC), or gains proper support for shared libraries, it can only be considered a fluke that this test even passes. Disabling it unblocks #14194.