You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have a Windows project that's organized using the standard template generated by stack new nowadays, with
a library section with the majority of the dependencies and source files
a short executable which depends on the library, and
a test suite which depends on the library.
In the library section, I have a module which uses inline-c to do a simple Windows system call.
The main executable builds successfully if I run stack build. But, when I try to run stack test I get a linker error:
...
[41 of 41] Compiling AppMain ( app\AppMain.hs, .stack-work\dist\5c8418a7\build\AppMain.o )
Preprocessing test suite 'hite-test' for hite-0.1.0.0..
Building test suite 'hite-test' for hite-0.1.0.0..
[ 1 of 45] Compiling Paths_hite ( .stack-work\dist\5c8418a7\build\hite-test\autogen\Paths_hite.hs, .stack-work\dist\5c8418a7\build\hite-test\hite-test-tmp\Paths_hite.o )
[ 2 of 45] Compiling Test.CollaborationTests.CursoringTests ( test\Test\CollaborationTests\CursoringTests.hs, .stack-work\dist\5c8418a7\build\hite-test\hite-test-tmp\Test\CollaborationTests\CursoringTests.o )
GHC runtime linker: fatal error: I found a duplicate definition for symbol
inline_c_OSCompat_Interrupt_0
whilst processing object file
C:\Users\tom\hite\hite\.stack-work\dist\5c8418a7\build\HShite-0.1.0.0-IDiA7VshXkO53Edvdb5QZc.o
The symbol was previously defined in
C:\Users\tom\hite\hite\.stack-work\install\2d3db291\lib\x86_64-windows-ghc-8.2.2\hite-0.1.0.0-HQALbSItfMOFfZeOJxQ9T2\HShite-0.1.0.0-HQALbSItfMOFfZeOJxQ9T2.o
This could be caused by:
* Loading two different object files which export the same symbol
* Specifying the same object file twice on the GHCi command line
* An incorrect `package.conf' entry, causing some object to be
loaded twice.
ghc.EXE: panic! (the 'impossible' happened)
(GHC version 8.2.2 for x86_64-unknown-mingw32):
loadObj "C:\\Users\\tom\\hite\\hite\\.stack-work\\dist\\5c8418a7\\build\\HShite-0.1.0.0-IDiA7VshXkO53Edvdb5QZc.o": failed
I'm guessing that somehow the C file is getting generated/linked twice, once for the main library/executable and once for the test suite. I've tried a NOINLINE pragma but it didn't help. I'm not sure if it's significant that one symbol is in .stack-work\install and one is in .stack-work\dist.
This is also slightly hard to reproduce -- for a little while it disappeared and the test suite ran fine, then it started happening again. I tried to make a minimal repro project but have so far failed to reproduce in a simpler setting. I've tried some combinations of stack clean and re-building but no luck.
Any chance you can shed any light on this? Thanks!
The text was updated successfully, but these errors were encountered:
I have a Windows project that's organized using the standard template generated by
stack new
nowadays, withlibrary
section with the majority of the dependencies and source filesIn the library section, I have a module which uses
inline-c
to do a simple Windows system call.The main executable builds successfully if I run
stack build
. But, when I try to runstack test
I get a linker error:I'm guessing that somehow the C file is getting generated/linked twice, once for the main library/executable and once for the test suite. I've tried a
NOINLINE
pragma but it didn't help. I'm not sure if it's significant that one symbol is in.stack-work\install
and one is in.stack-work\dist
.This is also slightly hard to reproduce -- for a little while it disappeared and the test suite ran fine, then it started happening again. I tried to make a minimal repro project but have so far failed to reproduce in a simpler setting. I've tried some combinations of
stack clean
and re-building but no luck.Any chance you can shed any light on this? Thanks!
The text was updated successfully, but these errors were encountered: