Magicloud | 7 Oct 05:14

After upgrade bytestring to 0.9.1.3, my program cannot run.

Just a simple text process program. When I runhaskell it. I got:

GHCi runtime linker: fatal error: I found a duplicate definition for symbol
   fps_minimum
whilst processing object file
   ~/.cabal/lib/bytestring-0.9.1.3/ghc-6.8.3/HSbytestring-0.9.1.3.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.
GHCi cannot safely continue in this situation.  Exiting now.  Sorry.
Don Stewart | 7 Oct 05:21
Gravatar

Re: After upgrade bytestring to 0.9.1.3, my program cannot run.

magicloud.magiclouds:
> Just a simple text process program. When I runhaskell it. I got:
> 
> GHCi runtime linker: fatal error: I found a duplicate definition for symbol
>   fps_minimum
> whilst processing object file
>   ~/.cabal/lib/bytestring-0.9.1.3/ghc-6.8.3/HSbytestring-0.9.1.3.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.
> GHCi cannot safely continue in this situation.  Exiting now.  Sorry.
> 

This likely means your program is using some package A, that has been
compiled against (and loading) old bytestring, but also loading the new
bytestring.

The solution is to recompile whatever your library 'A' is that is trying
to use the old bytestring.

Or try compiling it , with ghc --make

-- Don
Duncan Coutts | 7 Oct 07:50
Gravatar

Re: After upgrade bytestring to 0.9.1.3, my program cannot run.

On Mon, 2008-10-06 at 20:21 -0700, Don Stewart wrote:
> magicloud.magiclouds:
> > Just a simple text process program. When I runhaskell it. I got:
> > 
> > GHCi runtime linker: fatal error: I found a duplicate definition for symbol
> >   fps_minimum
> > whilst processing object file
> >   ~/.cabal/lib/bytestring-0.9.1.3/ghc-6.8.3/HSbytestring-0.9.1.3.o

> Or try compiling it , with ghc --make

The reason is that while the Haskell code uses versioned linker symbols,
the C code in the bytestring library does not. That means both versions
define fps_minimum and a few other functions.

The system linker does not care and just picks one. The GHCi linker is
more picky and complains when two object files define the same linker
symbol. That's why you get the problem with GHCi and not ghc --make.

Duncan

Gmane