
Hi Ian, On Mar 30, 2007, at 8:22 AM, Ian Lynagh wrote:
On Fri, Mar 30, 2007 at 09:31:07AM +0100, Simon Marlow wrote:
Ian Lynagh wrote:
OK, so we know that the wrong value is being passed to newPinnedByteArray#, right? There aren't many calls to that:
libraries/base/Foreign/Marshal/Alloc.hs libraries/base/GHC/ForeignPtr.hs (4 calls) libraries/base/GHC/Handle.hs
Oh, I've just realised, it's the 6.4.2 libraries you need to look at, not the 6.6 ones.
Let me make sure I understand this: the problem show up when running the 6.6 compiler in compiler/stage1/ghc-6.6-20070314. This compiler is linked with the ghc-6.4.2 RTS _and_ the ghc-6.4.2 libraries, correct? So when I look for symbols mentioned in the RTS stack, (e.g., "s311_info") I have to refer to the -ddump-stg output from the ghc-6.4.2 build. Is this true?
so the easiest way forward is probably to print something unique, and the size passed, in each one and try to work backwards towards the source. e.g.
Or just single-step (by *instruction*, not line) from an earlier point before the crash. I think Greg was stepping by line before, which is why he didn't see anything happen before the erroneous call.
If you're going to try this then I find it easier with
GhcLibHcOpts += -O0 -g
when building the (6.4.2) libraries.
Yes, I did this. Thank you for your help! Best Wishes, Greg

Hi Gregory, On Fri, Mar 30, 2007 at 06:17:10PM -0400, Gregory Wright wrote:
On Mar 30, 2007, at 8:22 AM, Ian Lynagh wrote:
On Fri, Mar 30, 2007 at 09:31:07AM +0100, Simon Marlow wrote:
Ian Lynagh wrote:
OK, so we know that the wrong value is being passed to newPinnedByteArray#, right? There aren't many calls to that:
libraries/base/Foreign/Marshal/Alloc.hs libraries/base/GHC/ForeignPtr.hs (4 calls) libraries/base/GHC/Handle.hs
Oh, I've just realised, it's the 6.4.2 libraries you need to look at, not the 6.6 ones.
Let me make sure I understand this: the problem show up when running the 6.6 compiler in compiler/stage1/ghc-6.6-20070314. This compiler is linked with the ghc-6.4.2 RTS _and_ the ghc-6.4.2 libraries, correct?
Right, the process is roughly this: 1: compile stage 1 GHC (with the libraries and RTS of the compiler we already have) 2: compile the RTS with the stage 1 GHC 3: compile the libraries with the stage 1 GHC 4: compile a stage 2 GHC with the stage 1 GHC, and the RTS and libraries that we built with it except older GHCs don't have all the libraries we'd like to use to write GHC, so there's actually a step 0: 0: compile the libraries in compat/ with the compiler we already have and these compat libraries are also used in step 1.
So when I look for symbols mentioned in the RTS stack, (e.g., "s311_info") I have to refer to the -ddump-stg output from the ghc-6.4.2 build. Is this true?
That and the compat/ of the new GHC tree. If your 6.4.2 is still the hc-build then s311_info should be in the .hc files if it's from there. Thanks Ian
participants (2)
-
Gregory Wright
-
Ian Lynagh