More on FreeBSD/amd64
Gregory Wright
gwright at comcast.net
Sun Apr 1 18:10:25 EDT 2007
Hi Ian,
On Apr 1, 2007, at 3:57 PM, Ian Lynagh wrote:
>
> Hi Gregory,
>
>> Is there a version of "print" I can use for debugging these
>> libraries?
>> Just adding "print" causes a cycle in module dependencies.
>
> Ah, remove the #if/#endif around the definition of "puts", its export,
> and the GHC.Pack import in libraries/base/GHC/Handle.hs
>
No such luck. I even copied "puts" into libraries/base/GHC/
ForeignPtr.hs
but I still get I cycle because I need withCString to define "puts":
Module imports form a cycle for modules:
GHC.ForeignPtr
imports: GHC.Show GHC.Err GHC.Ptr GHC.IOBase GHC.Base GHC.List
Foreign.Storable Foreign.Ptr Foreign.C Control.Monad
Foreign.C imports: Foreign.C.Error Foreign.C.String Foreign.C.Types
Foreign.C.Error
imports: GHC.Base GHC.Num GHC.IOBase Data.Maybe
Foreign.Marshal.Error Foreign.C.String Foreign.C.Types
Foreign.Ptr
Foreign.Storable GHC.IOBase
Foreign.C.String
imports: GHC.Base GHC.IOBase GHC.Num GHC.Real GHC.List Data.Word
Foreign.Storable Foreign.Ptr Foreign.C.Types
Foreign.Marshal.Array
Foreign.C.Types
Data.Typeable
imports: GHC.Arr GHC.Stable GHC.ForeignPtr GHC.Ptr GHC.STRef GHC.ST
GHC.IOBase GHC.IOBase GHC.Real GHC.Float GHC.Num
GHC.Err GHC.Show
GHC.Base Data.List Data.Word Data.Int Data.Either
Data.Maybe
Data.HashTable
Foreign.Marshal.Array
imports: GHC.Base GHC.Err GHC.List GHC.Num GHC.IOBase
Foreign.Marshal.Utils Foreign.Marshal.Alloc
Foreign.Storable
Foreign.Ptr Control.Monad
Foreign.Marshal.Utils
imports: GHC.Base GHC.Num GHC.Real GHC.IOBase Foreign.Marshal.Alloc
Foreign.C.Types Foreign.Storable Foreign.Ptr Data.Maybe
Foreign.Marshal.Alloc
imports: GHC.Num GHC.Base GHC.Err GHC.Ptr GHC.Real GHC.IOBase
Foreign.ForeignPtr Foreign.Storable Foreign.C.Types
Foreign.Ptr
Data.Maybe
Foreign.ForeignPtr
imports: GHC.ForeignPtr GHC.Err GHC.Num GHC.IOBase GHC.Base
Foreign.Storable Foreign.Ptr
<<ghc: 150783504 bytes, 23 GCs, 1498056/2873752 avg/max bytes
residency (3 samples), 19M in use, 0.00 INIT (0.00 elapsed), 0.48 MUT
(1.76 elapsed), 0.06 GC (0.07 elapsed) :ghc>>
gmake[1]: *** [depend] Error 1
gmake: *** [boot] Error 1
gmake: Leaving directory `/tmp/ghc-6.4.2/libraries'
GHC.ForeignPtr does seem to be the root of much evil, since everything
seems to depend on it. Any other hints on how I could get some output?
BTW, I have done some more tracing with gdb and I think I am a bit
closer
to the underlying bug. Before the bad call to newPinnedByteArray#,
there
are a number of calls to functions bound to libc's regex functions
(e.g., regcomp,
regexec). Since this is FreeBSD's libc, there may easily be
differences from the much
better tested glibc. It looks like the regex functions are being
used to look
up package names, since I thought I saw a call from somewhere in
Cabal.Distribution.
I need to check this once I get ghc-6.4.2 rebuilt.
Best Wishes,
Greg
More information about the Glasgow-haskell-users
mailing list