[GHC] #10799: "I found a duplicate definition for symbol: __x86.get_pc_thunk.bx" in package network

GHC ghc-devs at haskell.org
Thu Aug 27 13:46:57 UTC 2015


#10799: "I found a duplicate definition for symbol: __x86.get_pc_thunk.bx" in
package network
-------------------------------------+-------------------------------------
        Reporter:  blueonyx          |                   Owner:
            Type:  bug               |                  Status:  new
        Priority:  normal            |               Milestone:
       Component:  GHC API           |                 Version:  7.10.2
      Resolution:                    |                Keywords:
Operating System:  Unknown/Multiple  |            Architecture:
                                     |  Unknown/Multiple
 Type of failure:  Runtime crash     |               Test Case:
      Blocked By:                    |                Blocking:
 Related Tickets:  #9657             |  Differential Revisions:
-------------------------------------+-------------------------------------
Description changed by blueonyx:

Old description:

> hi, i get this panic! using hint to interpret code which uses the
> network package (on 32bit ubuntu):
>
> {{{
> GHC runtime linker: fatal error: I found a duplicate definition for
> symbol
>    __i686.get_pc_thunk.bx
> whilst processing object file
>    /home/mechgen/get_pc_thunk.bx/.cabal-sandbox/lib/i386-linux-
> ghc-7.10.2/network-2.6.2.1-F6mK9sCIw3M5SbZMt2lUQE/libHSnetwork-2.6.2.1-F6mK9sCIw3M5SbZMt2lUQE.a
> 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.
> Left (GhcException "panic! (the 'impossible' happened)\n  (GHC version
> 7.10.2 for i386-unknown-linux):\n\tloadArchive
> \"/home/mechgen/get_pc_thunk.bx/.cabal-sandbox/lib/i386-linux-
> ghc-7.10.2/network-2.6.2.1-F6mK9sCIw3M5SbZMt2lUQE/libHSnetwork-2.6.2.1-F6mK9sCIw3M5SbZMt2lUQE.a\":
> failed\n\nPlease report this as a GHC bug:
> http://www.haskell.org/ghc/reportabug\n")
> }}}
>
> the problem also arises when the interpreted module imports a module
> which imports network, so it doesn't have to import network directly.
>
> also "it worked before". i can't really remember the previous working
> versions, but it must have been something like ghc 7.6.3 and haskell-
> platform 2013.2.0.0.
>
> the related ticket mentioned building without -fPIC, but i can't find it
> in network's cabal file.
>
> more info:
> {{{
> $  uname -a
> Linux mechgen 3.5.0-23-generic #35~precise1-Ubuntu SMP Fri Jan 25
> 17:15:33 UTC 2013 i686 i686 i386 GNU/Linux
> $  ghc --version
> The Glorious Glasgow Haskell Compilation System, version 7.10.2
> $  cabal --version
> cabal-install version 1.22.6.0
> using version 1.22.4.0 of the Cabal library
> }}}
>
> to reproduce:
>
> {{{
> $  mv ~/Compile.hs ~/DummyImportingNetwork.hs .
> $  cabal sandbox init
> $  cabal install  network==2.6.2.1 hint==0.4.2.3
> $  cabal exec -- ghc --make -o compile Compile.hs
> $  PATH=.:$PATH cabal exec compile
> }}}

New description:

 hi, i get this panic! using hint to interpret code which uses the  network
 package (on 32bit ubuntu):

 {{{
 GHC runtime linker: fatal error: I found a duplicate definition for symbol
    __i686.get_pc_thunk.bx
 whilst processing object file
    /home/mechgen/get_pc_thunk.bx/.cabal-sandbox/lib/i386-linux-
 ghc-7.10.2/network-2.6.2.1-F6mK9sCIw3M5SbZMt2lUQE/libHSnetwork-2.6.2.1-F6mK9sCIw3M5SbZMt2lUQE.a
 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.
 Left (GhcException "panic! (the 'impossible' happened)\n  (GHC version
 7.10.2 for i386-unknown-linux):\n\tloadArchive
 \"/home/mechgen/get_pc_thunk.bx/.cabal-sandbox/lib/i386-linux-
 ghc-7.10.2/network-2.6.2.1-F6mK9sCIw3M5SbZMt2lUQE/libHSnetwork-2.6.2.1-F6mK9sCIw3M5SbZMt2lUQE.a\":
 failed\n\nPlease report this as a GHC bug:
 http://www.haskell.org/ghc/reportabug\n")
 }}}

 the problem also arises when the interpreted module imports a module which
 imports network, so it doesn't have to import network directly.

 also "it worked before". i can't really remember the previous working
 versions, but it must have been something like ghc 7.6.3 and haskell-
 platform 2013.2.0.0.

 the related ticket mentioned building without -fPIC, but i can't find it
 in network's cabal file.

 more info:
 {{{
 $  uname -a
 Linux mechgen 3.5.0-23-generic #35~precise1-Ubuntu SMP Fri Jan 25 17:15:33
 UTC 2013 i686 i686 i386 GNU/Linux
 $  ghc --version
 The Glorious Glasgow Haskell Compilation System, version 7.10.2
 $  cabal --version
 cabal-install version 1.22.6.0
 using version 1.22.4.0 of the Cabal library
 }}}

 to reproduce:

 {{{
 cat <<EOF > Compile.hs
 module Main where

 import Control.Exception (bracket)
 import System.IO (openTempFile, hClose, hPutStr)
 import System.Directory (removeFile)
 import Language.Haskell.Interpreter hiding (reset, get)

 withTempFile :: FilePath -> FilePath -> String -> (FilePath -> IO a) -> IO
 a
 withTempFile tempDir name' body action = do
   (fp,h) <- openTempFile tempDir (name' ++ ".hs")
   hPutStr h body
   hClose h
   bracket (return fp) (\fp' -> removeFile fp') action

 compile :: IO (Either InterpreterError Int)
 compile = do
   let tempDir = "."
   let name' = "DummyImportingNetwork"
   body <- readFile $ name' ++ ".hs"
   withTempFile tempDir name' body $ \fp -> do
       runInterpreter $ do
           set [installedModulesInScope := True]
           loadModules [fp]
           setTopLevelModules [name']
           interpret ("foobar") infer


 main = compile >>= print
 EOF
 cat <<EOF > DummyImportingNetwork.hs
 module DummyImportingNetwork where

 -- this breaks everything
 import Network.Socket

 -- this just has to typecheck
 foobar :: Int
 foobar = 23
 EOF
 cabal sandbox init
 cabal install  network==2.6.2.1 hint==0.4.2.3
 cabal exec -- ghc --make -o compile Compile.hs
 PATH=.:$PATH cabal exec compile

 }}}

--

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10799#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list