On Tue, Sep 6, 2022 at 10:17 AM Simon Peyton Jones <simon.peytonjo...@gmail.com> wrote:
The following two are great questions which I do not know the answer to. > How can I repro with a *particular* GHC, for example my build of HEAD? > > And how can I find the command line that finally hung, so I can try it > repeatedly? > > Simon > > On Tue, 6 Sept 2022 at 14:02, Doug Burke <dburke...@gmail.com> wrote: >> >> I have a test executable which will build with ghc 9.2.3 (and many >> older versions) but which appears to hang with GHC 9.2.4. I have >> exhausted what little I know of in debugging this, so any help in >> identifying the problem would be appreciated. Unfortunately it's a >> relatively large application, so the following reproducer requires >> some time/disk space. >> >> Thanks fo ryour time, >> Doug >> >> ----------------------------------------------------------------------------------------------------------------- >> >> I am on a linux machine (ubuntu 22.04) and have seen this with builds >> either with stack or nix. >> >> % git clone https://gitlab.com/dburke/swish temp >> % cd temp >> % git rev-parse HEAD >> 09c92e0fbbea9be86cac5c8e273e1d5915a9eeae >> >> Added to get the timings, but it's not strictly necessary: >> >> % sed -i -e "s/-Wall /-Wall -ddump-timings /" swish.cabal >> >> First a check of a successful build (with stack, GHC 9.0.2): >> >> % stack test --resolver lts-19.22 :test-rdfproof >> ... wait a while >> [2 of 2] Compiling Main >> *** Parser [Main]: >> Parser [Main]: alloc=27576560 time=8.702 >> *** Renamer/typechecker [Main]: >> Renamer/typechecker [Main]: alloc=61957416 time=85.052 >> *** Desugar [Main]: >> Desugar [Main]: alloc=19485576 time=16.095 >> *** Simplifier [Main]: >> Simplifier [Main]: alloc=1024590752 time=937.479 >> *** Specialise [Main]: >> Specialise [Main]: alloc=49779464 time=30.480 >> *** Float out(FOS {Lam = Just 0, >> Consts = True, >> OverSatApps = False}) [Main]: >> Float out(FOS {Lam = Just 0, Consts = True, OverSatApps = False}) >> [Main]: alloc=243444904 time=287.934 >> *** Simplifier [Main]: >> Simplifier [Main]: alloc=959971736 time=844.707 >> *** Simplifier [Main]: >> Simplifier [Main]: alloc=816465992 time=727.244 >> *** Simplifier [Main]: >> Simplifier [Main]: alloc=914290184 time=835.805 >> Float inwards [Main]: alloc=17448 time=0.007 >> Called arity analysis [Main]: alloc=19288 time=0.008 >> *** Float inwards [Main]: >> *** Called arity analysis [Main]: >> *** Simplifier [Main]: >> *** Demand analysis [Main]: >> Simplifier [Main]: alloc=492772800 time=396.191 >> Demand analysis [Main]: alloc=435384136 time=234.248 >> *** Constructed Product Result analysis [Main]: >> Constructed Product Result analysis [Main]: alloc=67395816 time=27.498 >> *** Worker Wrapper binds [Main]: >> Worker Wrapper binds [Main]: alloc=10456160 time=10.538 >> *** Simplifier [Main]: >> Simplifier [Main]: alloc=675869616 time=624.538 >> Exitification transformation [Main]: alloc=20416 time=0.007 >> *** Exitification transformation [Main]: >> *** Float out(FOS {Lam = Just 0, >> Consts = True, >> OverSatApps = True}) [Main]: >> Float out(FOS {Lam = Just 0, Consts = True, OverSatApps = True}) >> [Main]: alloc=212059304 time=172.872 >> Common sub-expression [Main]: alloc=18768 time=0.008 >> Float inwards [Main]: alloc=17448 time=0.006 >> *** Common sub-expression [Main]: >> *** Float inwards [Main]: >> *** Simplifier [Main]: >> Simplifier [Main]: alloc=430634768 time=397.868 >> *** Demand analysis [Main]: >> Demand analysis [Main]: alloc=144629272 time=70.451 >> *** CoreTidy [Main]: >> CoreTidy [Main]: alloc=48438688 time=44.112 >> *** CorePrep [Main]: >> *** CodeGen [Main]: >> CorePrep [Main]: alloc=15032 time=0.012 >> CodeGen [Main]: alloc=1738308168 time=1051.197 >> *** systool:as: >> systool:as: alloc=118376 time=0.481 >> *** initializing unit database: >> initializing unit database: alloc=15393080 time=21.985 >> *** initializing unit database: >> initializing unit database: alloc=3745512 time=2.507 >> *** Chasing dependencies: >> *** systool:cpp: >> systool:cpp: alloc=213016 time=0.552 >> Chasing dependencies: alloc=11345152 time=5.353 >> Linking >> .stack-work/dist/x86_64-linux-tinfo6/Cabal-3.4.1.0/build/test-rdfproof/test-rdfproof >> ... >> ... >> ... then it goes on to run the test >> ... >> >> With 9.2.4 it will not build >> >> % >> ... similar to above but with some information about the versions not >> ... fully tested with stack >> ... >> *** Parser [Main]: >> Parser [Main]: alloc=24346008 time=8.730 >> *** Renamer/typechecker [Main]: >> Renamer/typechecker [Main]: alloc=58415776 time=44.077 >> *** Desugar [Main]: >> Desugar [Main]: alloc=22148416 time=15.693 >> *** Simplifier [Main]: >> Simplifier [Main]: alloc=651048904 time=530.123 >> *** Specialise [Main]: >> Specialise [Main]: alloc=44412080 time=31.885 >> *** Float out(FOS {Lam = Just 0, >> Consts = True, >> OverSatApps = False}) [Main]: >> Float out(FOS {Lam = Just 0, Consts = True, OverSatApps = False}) >> [Main]: alloc=207753368 time=259.238 >> *** Simplifier [Main]: >> Simplifier [Main]: alloc=599788216 time=548.107 >> *** Simplifier [Main]: >> Simplifier [Main]: alloc=562910904 time=474.847 >> *** Simplifier [Main]: >> Simplifier [Main]: alloc=725093584 time=643.255 >> Float inwards [Main]: alloc=23720 time=0.011 >> Called arity analysis [Main]: alloc=25856 time=0.012 >> *** Float inwards [Main]: >> *** Called arity analysis [Main]: >> *** Simplifier [Main]: >> >> >> At this point it just makes my laptop fan spin faster wit h one of my >> CPUs pegged at 100%, but it never seems to print anything more. >> >> For those that prefer nix, you can try the following which shows the >> same behavior (these are using the same mangled cabal file to get the >> timings): >> >> % nix-shell --argstr compiler ghc923 >> % cabal test test-rdfproof >> ... >> [2 of 2] Compiling Main ( tests/RDFProofTest.hs, >> /home/dburke/rdf/temp/dist-newstyle/build/x86_64-linux/ghc-9.2.3/swish-0.10.2.0/t/test-rdfproof/build/test-rdfproof/test-rdfproof-tmp/Main.o >> ) >> *** Parser [Main]: >> Parser [Main]: alloc=25233912 time=9.910 >> *** Renamer/typechecker [Main]: >> Renamer/typechecker [Main]: alloc=57027880 time=45.911 >> *** Desugar [Main]: >> Desugar [Main]: alloc=21808096 time=54.569 >> *** Simplifier [Main]: >> Simplifier [Main]: alloc=936319072 time=880.189 >> *** Specialise [Main]: >> Specialise [Main]: alloc=41599784 time=23.425 >> *** Float out(FOS {Lam = Just 0, >> Consts = True, >> OverSatApps = False}) [Main]: >> Float out(FOS {Lam = Just 0, Consts = True, OverSatApps = False}) >> [Main]: alloc=204955224 time=226.189 >> *** Simplifier [Main]: >> Simplifier [Main]: alloc=610153728 time=654.735 >> *** Simplifier [Main]: >> Simplifier [Main]: alloc=566346328 time=549.298 >> *** Simplifier [Main]: >> Simplifier [Main]: alloc=801330080 time=802.428 >> *** Float inwards [Main]: >> Float inwards [Main]: alloc=23160 time=0.012 >> *** Called arity analysis [Main]: >> Called arity analysis [Main]: alloc=25296 time=0.013 >> *** Simplifier [Main]: >> Simplifier [Main]: alloc=423629864 time=320.611 >> *** Demand analysis [Main]: >> Demand analysis [Main]: alloc=253018800 time=175.884 >> *** Constructed Product Result analysis [Main]: >> Constructed Product Result analysis [Main]: alloc=74681224 time=28.675 >> *** Worker Wrapper binds [Main]: >> Worker Wrapper binds [Main]: alloc=8622264 time=7.070 >> *** Simplifier [Main]: >> Simplifier [Main]: alloc=598294440 time=554.802 >> *** Exitification transformation [Main]: >> Exitification transformation [Main]: alloc=26712 time=0.013 >> *** Float out(FOS {Lam = Just 0, >> Consts = True, >> OverSatApps = True}) [Main]: >> Float out(FOS {Lam = Just 0, Consts = True, OverSatApps = True}) >> [Main]: alloc=179540608 time=226.938 >> *** Common sub-expression [Main]: >> Common sub-expression [Main]: alloc=24800 time=0.014 >> *** Float inwards [Main]: >> Float inwards [Main]: alloc=23168 time=0.010 >> *** Simplifier [Main]: >> Simplifier [Main]: alloc=382679152 time=318.224 >> *** Demand analysis [Main]: >> Demand analysis [Main]: alloc=84192056 time=50.989 >> *** CoreTidy [Main]: >> CoreTidy [Main]: alloc=45347360 time=44.571 >> *** CorePrep [Main]: >> CorePrep [Main]: alloc=34753448 time=10.917 >> *** CoreToStg [Main]: >> CoreToStg [Main]: alloc=108293568 time=114.768 >> *** CodeGen [Main]: >> CodeGen [Main]: alloc=1475393208 time=858.854 >> *** WriteIface >> [/home/dburke/rdf/temp/dist-newstyle/build/x86_64-linux/ghc-9.2.3/swish-0.10.2.0/t/test-rdfproof/build/test-rdfproof/test-rdfproof-tmp/Main.hi]: >> WriteIface >> [/home/dburke/rdf/temp/dist-newstyle/build/x86_64-linux/ghc-9.2.3/swish-0.10.2.0/t/test-rdfproof/build/test-rdfproof/test-rdfproof-tmp/Main.hi]: >> alloc=3732816 time=3.044 >> *** systool:as: >> systool:as: alloc=132384 time=0.456 >> *** initializing unit database: >> initializing unit database: alloc=7386016 time=4.306 >> *** initializing unit database: >> initializing unit database: alloc=4000384 time=12.125 >> *** Chasing dependencies: >> *** systool:cpp: >> systool:cpp: alloc=313896 time=0.486 >> Chasing dependencies: alloc=12822240 time=6.459 >> Linking >> /home/dburke/rdf/temp/dist-newstyle/build/x86_64-linux/ghc-9.2.3/swish-0.10.2.0/t/test-rdfproof/build/test-rdfproof/test-rdfproof >> ... >> ... >> >> versus >> >> % nix-shell --argstr compiler ghc924 >> cabal test test-rdfproof >> Warning: The package list for 'hackage.haskell.org' is 20 days old. >> Run 'cabal update' to get the latest list of available packages. >> Resolving dependencies... >> Build profile: -w ghc-9.2.4 -O1 >> In order, the following will be built (use -v for more details): >> - swish-0.10.2.0 (test:test-rdfproof) (first run) >> Preprocessing test suite 'test-rdfproof' for swish-0.10.2.0.. >> Building test suite 'test-rdfproof' for swish-0.10.2.0.. >> *** initializing unit database: >> initializing unit database: alloc=7389248 time=4.462 >> *** initializing unit database: >> initializing unit database: alloc=4001312 time=11.664 >> *** Chasing dependencies: >> *** systool:cpp: >> systool:cpp: alloc=319464 time=0.481 >> Chasing dependencies: alloc=12861208 time=6.331 >> [2 of 2] Compiling Main ( tests/RDFProofTest.hs, >> /home/dburke/rdf/temp/dist-newstyle/build/x86_64-linux/ghc-9.2.4/swish-0.10.2.0/t/test-rdfproof/build/test-rdfproof/test-rdfproof-tmp/Main.o >> ) >> *** Parser [Main]: >> Parser [Main]: alloc=25236056 time=23.982 >> *** Renamer/typechecker [Main]: >> Renamer/typechecker [Main]: alloc=101830968 time=97.529 >> *** Desugar [Main]: >> Desugar [Main]: alloc=24617072 time=19.187 >> *** Simplifier [Main]: >> Simplifier [Main]: alloc=665051592 time=558.078 >> *** Specialise [Main]: >> Specialise [Main]: alloc=44894576 time=30.341 >> *** Float out(FOS {Lam = Just 0, >> Consts = True, >> OverSatApps = False}) [Main]: >> Float out(FOS {Lam = Just 0, Consts = True, OverSatApps = False}) >> [Main]: alloc=208060752 time=245.458 >> *** Simplifier [Main]: >> Simplifier [Main]: alloc=602721856 time=555.073 >> *** Simplifier [Main]: >> Simplifier [Main]: alloc=563887832 time=529.865 >> *** Simplifier [Main]: >> Simplifier [Main]: alloc=727381840 time=606.367 >> *** Float inwards [Main]: >> Float inwards [Main]: alloc=23720 time=0.012 >> *** Called arity analysis [Main]: >> Called arity analysis [Main]: alloc=25848 time=0.012 >> *** Simplifier [Main]: >> >> which again hangs >> _______________________________________________ >> ghc-devs mailing list >> ghc-devs@haskell.org >> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs