bundle panic

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

bundle panic

Simon Peyton Jones
I've looked into this myself.  I don't think it's actually anything wrong in gmp-wrappers.  It's because CmmBuildInfoTables expects all the info tables in the (CmmProc info_tbls lbl g) to be defined in the graph g.

But Jan's new optimisation to the stack overflow check (Note [Always false stack check] in CmmLayoutStack) ends up dropping a conditional branch, so a call to gc is eliminated, and hence a proc point is eliminated, and we end up with an unused thing in info_tbls, which confuses CmmBuildInfoTables

Sigh. I don't know why this only happens on Windows.  I'm looking into a fix

Simon



From: Simon Peyton-Jones
Sent: 15 November 2013 22:18
To: ghc-devs at haskell.org
Subject: bundle panic

Windows build is failing again in a new way.  It was fine a couple of days ago. Does this ring any bells?

ghc-stage1.exe: panic! (the 'impossible' happened)

  (GHC version 7.7.20131107 for i386-unknown-mingw32):

     bundle

Simon



"inplace/bin/ghc-stage1.exe" -static  -H32m -O -Werror -Wall -H64m -O0    -package-name integer-gmp-0.5.1.0 -hide-all-packages -i -ilibraries/integer-gmp/. -ilibraries/integer-gmp/dist-install/build -ilibraries/integer-gmp/dist-install/build/autogen -Ilibraries/integer-gmp/dist-install/build -Ilibraries/integer-gmp/dist-install/build/autogen -Ilibraries/integer-gmp/.    -optP-include -optPlibraries/integer-gmp/dist-install/build/autogen/cabal_macros.h -package ghc-prim-0.3.1.0 -Wall -package-name integer-gmp -XHaskell2010 -dcore-lint  -no-user-package-db -rtsopts -Ilibraries/integer-gmp/mkGmpDerivedConstants/dist     -c libraries/integer-gmp/cbits/gmp-wrappers.cmm -o libraries/integer-gmp/dist-install/build/cbits/gmp-wrappers.o

ghc-stage1.exe: panic! (the 'impossible' happened)

  (GHC version 7.7.20131107 for i386-unknown-mingw32):

     bundle

    c8 integer_cmm_importIntegerFromByteArrayzh [(c8,

                                                  label: block{v c8}_info

                                                  rep:StackRep [False, True, True, True]),

                                                 (cg,

                                                  label: block{v cg}_info

                                                  rep:StackRep [False, True, True, True])]



Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug



HEAD (master)$
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/ghc-devs/attachments/20131116/f17670ef/attachment.html>

Reply | Threaded
Open this post in threaded view
|

bundle panic

Simon Marlow-7
On 16/11/13 00:16, Simon Peyton-Jones wrote:
> I?ve looked into this myself.  I don?t think it?s actually anything
> wrong in gmp-wrappers.  It?s because CmmBuildInfoTables expects all the
> info tables in the (CmmProc info_tbls lbl g) to be defined in the graph g.
>
> But Jan?s new optimisation to the stack overflow check (Note [Always
> false stack check] in CmmLayoutStack) ends up dropping a conditional
> branch, so a call to gc is eliminated, and hence a proc point is
> eliminated, and we end up with an unused thing in info_tbls, which
> confuses CmmBuildInfoTables

> Sigh. I don?t know why this only happens on Windows.  I?m looking into a fix

Perhaps this is a problem that only shows up with proc points, which is
why you wouldn't see it on x86_64/Linux.  Let me know if you get stuck
and I'll try to look into it.

FYI eliminating always-false stack checks is not new, it was temporarily
broken by:

commit 94125c97e49987e91fa54da6c86bc6d17417f5cf
Author: Jan Stolarek <jan.stolarek at p.lodz.pl>
Date:   Wed Oct 16 09:45:56 2013 +0200

     Generate (old + 0) instead of Sp in stack checks

and then fixed up by:

commit 1cf0c8ad321d1d358cbec46d35be02566faf2d00
Author: Jan Stolarek <jan.stolarek at p.lodz.pl>
Date:   Thu Oct 17 23:17:06 2013 +0200

     Optimise stack checks that are always false

Cheers,
Simon


>
>
> Simon
>
> *From:*Simon Peyton-Jones
> *Sent:* 15 November 2013 22:18
> *To:* ghc-devs at haskell.org
> *Subject:* bundle panic
>
> Windows build is failing again in a new way.  It was fine a couple of
> days ago. Does this ring any bells?
>
> ghc-stage1.exe: panic! (the 'impossible' happened)
>
>    (GHC version 7.7.20131107 for i386-unknown-mingw32):
>
>       bundle
>
> Simon
>
> "inplace/bin/ghc-stage1.exe" -static  -H32m -O -Werror -Wall -H64m
> -O0    -package-name integer-gmp-0.5.1.0 -hide-all-packages -i
> -ilibraries/integer-gmp/. -ilibraries/integer-gmp/dist-install/build
> -ilibraries/integer-gmp/dist-install/build/autogen
> -Ilibraries/integer-gmp/dist-install/build
> -Ilibraries/integer-gmp/dist-install/build/autogen
> -Ilibraries/integer-gmp/.    -optP-include
> -optPlibraries/integer-gmp/dist-install/build/autogen/cabal_macros.h
> -package ghc-prim-0.3.1.0 -Wall -package-name integer-gmp -XHaskell2010
> -dcore-lint  -no-user-package-db -rtsopts
> -Ilibraries/integer-gmp/mkGmpDerivedConstants/dist     -c
> libraries/integer-gmp/cbits/gmp-wrappers.cmm -o
> libraries/integer-gmp/dist-install/build/cbits/gmp-wrappers.o
>
> ghc-stage1.exe: panic! (the 'impossible' happened)
>
>    (GHC version 7.7.20131107 for i386-unknown-mingw32):
>
>       bundle
>
>      c8 integer_cmm_importIntegerFromByteArrayzh [(c8,
>
>                                                    label: block{v c8}_info
>
>                                                    rep:StackRep [False,
> True, True, True]),
>
>                                                   (cg,
>
>                                                    label: block{v cg}_info
>
>                                                    rep:StackRep [False,
> True, True, True])]
>
> Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
>
> HEAD (master)$
>
>
>
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://www.haskell.org/mailman/listinfo/ghc-devs
>


Reply | Threaded
Open this post in threaded view
|

bundle panic

Jan Stolarek
I don't see any commit fixing this so I assume that this is still relevant.

> Perhaps this is a problem that only shows up with proc points, which is
> why you wouldn't see it on x86_64/Linux.
Wouldn't this also break some of Mac builds? Besides, my change was commited a few weeks ago,
while Simon says this didn't happen a few days before.

> But Jan?s new optimisation to the stack overflow check (Note [Always false stack check] in
> CmmLayoutStack) ends up dropping a conditional branch,
In theory my optimisation should not affect elimination of unnecessary branches in any way - this
optimisation was there before. Note also that the last thing we do in Cmm pipeline is call to
removeUnreachableBlocksProc so any unreachable block should be eliminated from the final graph -
bundle is called later.

>so a call to gc is eliminated
A random guess: https://github.com/ghc/ghc/commit/ad0b943293cce74baf06ea36e1a4d51a3631dfdf
This was commited two days before you reported the problem and is GC-related.

Janek

Dnia niedziela, 17 listopada 2013, Simon Marlow napisa?:

> On 16/11/13 00:16, Simon Peyton-Jones wrote:
> > I?ve looked into this myself.  I don?t think it?s actually anything
> > wrong in gmp-wrappers.  It?s because CmmBuildInfoTables expects all the
> > info tables in the (CmmProc info_tbls lbl g) to be defined in the graph
> > g.
> >
> > But Jan?s new optimisation to the stack overflow check (Note [Always
> > false stack check] in CmmLayoutStack) ends up dropping a conditional
> > branch, so a call to gc is eliminated, and hence a proc point is
> > eliminated, and we end up with an unused thing in info_tbls, which
> > confuses CmmBuildInfoTables
> >
> > Sigh. I don?t know why this only happens on Windows.  I?m looking into a
> > fix
>
> Perhaps this is a problem that only shows up with proc points, which is
> why you wouldn't see it on x86_64/Linux.  Let me know if you get stuck
> and I'll try to look into it.
>
> FYI eliminating always-false stack checks is not new, it was temporarily
> broken by:
>
> commit 94125c97e49987e91fa54da6c86bc6d17417f5cf
> Author: Jan Stolarek <jan.stolarek at p.lodz.pl>
> Date:   Wed Oct 16 09:45:56 2013 +0200
>
>      Generate (old + 0) instead of Sp in stack checks
>
> and then fixed up by:
>
> commit 1cf0c8ad321d1d358cbec46d35be02566faf2d00
> Author: Jan Stolarek <jan.stolarek at p.lodz.pl>
> Date:   Thu Oct 17 23:17:06 2013 +0200
>
>      Optimise stack checks that are always false
>
> Cheers,
> Simon
>
> > Simon
> >
> > *From:*Simon Peyton-Jones
> > *Sent:* 15 November 2013 22:18
> > *To:* ghc-devs at haskell.org
> > *Subject:* bundle panic
> >
> > Windows build is failing again in a new way.  It was fine a couple of
> > days ago. Does this ring any bells?
> >
> > ghc-stage1.exe: panic! (the 'impossible' happened)
> >
> >    (GHC version 7.7.20131107 for i386-unknown-mingw32):
> >
> >       bundle
> >
> > Simon
> >
> > "inplace/bin/ghc-stage1.exe" -static  -H32m -O -Werror -Wall -H64m
> > -O0    -package-name integer-gmp-0.5.1.0 -hide-all-packages -i
> > -ilibraries/integer-gmp/. -ilibraries/integer-gmp/dist-install/build
> > -ilibraries/integer-gmp/dist-install/build/autogen
> > -Ilibraries/integer-gmp/dist-install/build
> > -Ilibraries/integer-gmp/dist-install/build/autogen
> > -Ilibraries/integer-gmp/.    -optP-include
> > -optPlibraries/integer-gmp/dist-install/build/autogen/cabal_macros.h
> > -package ghc-prim-0.3.1.0 -Wall -package-name integer-gmp -XHaskell2010
> > -dcore-lint  -no-user-package-db -rtsopts
> > -Ilibraries/integer-gmp/mkGmpDerivedConstants/dist     -c
> > libraries/integer-gmp/cbits/gmp-wrappers.cmm -o
> > libraries/integer-gmp/dist-install/build/cbits/gmp-wrappers.o
> >
> > ghc-stage1.exe: panic! (the 'impossible' happened)
> >
> >    (GHC version 7.7.20131107 for i386-unknown-mingw32):
> >
> >       bundle
> >
> >      c8 integer_cmm_importIntegerFromByteArrayzh [(c8,
> >
> >                                                    label: block{v
> > c8}_info
> >
> >                                                    rep:StackRep [False,
> > True, True, True]),
> >
> >                                                   (cg,
> >
> >                                                    label: block{v
> > cg}_info
> >
> >                                                    rep:StackRep [False,
> > True, True, True])]
> >
> > Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
> >
> > HEAD (master)$
> >
> >
> >
> > _______________________________________________
> > ghc-devs mailing list
> > ghc-devs at haskell.org
> > http://www.haskell.org/mailman/listinfo/ghc-devs
>
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://www.haskell.org/mailman/listinfo/ghc-devs



Reply | Threaded
Open this post in threaded view
|

bundle panic

Simon Peyton Jones
In reply to this post by Simon Marlow-7
I fixed this.

commit 3f0d4530a716b6db3c20b63825b56597e08b0d5e
Author: Simon Peyton Jones <simonpj at microsoft.com>
Date:   Fri Nov 22 10:12:55 2013 +0000

    When removing unreachable code, remove unreachable info tables too
   
    This bug only shows up when you are using proc-point splitting.
    What was happening was:
      * We generate a proc-point for the stack check
      * And an info table
      * We eliminate the stack check because it's redundant
      * And the dangling info table caused a panic in
        CmmBuildInfoTables.bundle

| -----Original Message-----
| From: Simon Marlow [mailto:marlowsd at gmail.com]
| Sent: 17 November 2013 09:57
| To: Simon Peyton-Jones; ghc-devs at haskell.org
| Subject: Re: bundle panic
|
| On 16/11/13 00:16, Simon Peyton-Jones wrote:
| > I've looked into this myself.  I don't think it's actually anything
| > wrong in gmp-wrappers.  It's because CmmBuildInfoTables expects all
| the
| > info tables in the (CmmProc info_tbls lbl g) to be defined in the
| graph g.
| >
| > But Jan's new optimisation to the stack overflow check (Note [Always
| > false stack check] in CmmLayoutStack) ends up dropping a conditional
| > branch, so a call to gc is eliminated, and hence a proc point is
| > eliminated, and we end up with an unused thing in info_tbls, which
| > confuses CmmBuildInfoTables
|
| > Sigh. I don't know why this only happens on Windows.  I'm looking into
| a fix
|
| Perhaps this is a problem that only shows up with proc points, which is
| why you wouldn't see it on x86_64/Linux.  Let me know if you get stuck
| and I'll try to look into it.
|
| FYI eliminating always-false stack checks is not new, it was temporarily
| broken by:
|
| commit 94125c97e49987e91fa54da6c86bc6d17417f5cf
| Author: Jan Stolarek <jan.stolarek at p.lodz.pl>
| Date:   Wed Oct 16 09:45:56 2013 +0200
|
|      Generate (old + 0) instead of Sp in stack checks
|
| and then fixed up by:
|
| commit 1cf0c8ad321d1d358cbec46d35be02566faf2d00
| Author: Jan Stolarek <jan.stolarek at p.lodz.pl>
| Date:   Thu Oct 17 23:17:06 2013 +0200
|
|      Optimise stack checks that are always false
|
| Cheers,
| Simon
|
|
| >
| >
| > Simon
| >
| > *From:*Simon Peyton-Jones
| > *Sent:* 15 November 2013 22:18
| > *To:* ghc-devs at haskell.org
| > *Subject:* bundle panic
| >
| > Windows build is failing again in a new way.  It was fine a couple of
| > days ago. Does this ring any bells?
| >
| > ghc-stage1.exe: panic! (the 'impossible' happened)
| >
| >    (GHC version 7.7.20131107 for i386-unknown-mingw32):
| >
| >       bundle
| >
| > Simon
| >
| > "inplace/bin/ghc-stage1.exe" -static  -H32m -O -Werror -Wall -H64m
| > -O0    -package-name integer-gmp-0.5.1.0 -hide-all-packages -i
| > -ilibraries/integer-gmp/. -ilibraries/integer-gmp/dist-install/build
| > -ilibraries/integer-gmp/dist-install/build/autogen
| > -Ilibraries/integer-gmp/dist-install/build
| > -Ilibraries/integer-gmp/dist-install/build/autogen
| > -Ilibraries/integer-gmp/.    -optP-include
| > -optPlibraries/integer-gmp/dist-install/build/autogen/cabal_macros.h
| > -package ghc-prim-0.3.1.0 -Wall -package-name integer-gmp -
| XHaskell2010
| > -dcore-lint  -no-user-package-db -rtsopts
| > -Ilibraries/integer-gmp/mkGmpDerivedConstants/dist     -c
| > libraries/integer-gmp/cbits/gmp-wrappers.cmm -o
| > libraries/integer-gmp/dist-install/build/cbits/gmp-wrappers.o
| >
| > ghc-stage1.exe: panic! (the 'impossible' happened)
| >
| >    (GHC version 7.7.20131107 for i386-unknown-mingw32):
| >
| >       bundle
| >
| >      c8 integer_cmm_importIntegerFromByteArrayzh [(c8,
| >
| >                                                    label: block{v
| c8}_info
| >
| >                                                    rep:StackRep
| [False,
| > True, True, True]),
| >
| >                                                   (cg,
| >
| >                                                    label: block{v
| cg}_info
| >
| >                                                    rep:StackRep
| [False,
| > True, True, True])]
| >
| > Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
| >
| > HEAD (master)$
| >
| >
| >
| > _______________________________________________
| > ghc-devs mailing list
| > ghc-devs at haskell.org
| > http://www.haskell.org/mailman/listinfo/ghc-devs
| >