Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stack executable built against optparse-applicative-0.17.1.0 'hangs' #475

Closed
mpilgrem opened this issue May 25, 2023 · 22 comments
Closed

Stack executable built against optparse-applicative-0.17.1.0 'hangs' #475

mpilgrem opened this issue May 25, 2023 · 22 comments

Comments

@mpilgrem
Copy link

I am still trying to narrow down what is going on, but this is what I am experiencing on Windows (I will test on macOS tomorrow, to see if it is OS-specific):

The Stack project makes considerable use of optparse-applicative, with Stack's complex set of commands. The current version of Stack is built against Stackage's LTS 20.21 snapshot (specifying optparse-applicative-0.17.0.0 and ansi-wl-pprint-0.6.9@rev:4). I replaced that with extra-deps optparse-applicative-0.17.1.0 and ansi-wl-pprint-1.0.2.

Stack then builds Stack, with no problem. However, if I then command stack --help with the new executable, it just 'hangs' (with no further output). The Task Manager shows that stack.exe is using ~ 25% to 35% of the CPU, consistently. So I guess something has got caught up in a loop somewhere.

@HuwCampbell
Copy link
Collaborator

Can you build with profiling then quit during the hang. You might be able to see the hot spot in the profiler output?
The changes for optparse are very minimal, so it could be in the compat library or prettyprinter too.

@mpilgrem
Copy link
Author

Will do (on profiling). It appears to be something to do with ansi-wl-pprint-1.0.2, because the problem does not occur with a dependency on optparse-applicative-0.17.1.0 and ansi-wl-pprint-0.6.9@rev:4.

@mpilgrem
Copy link
Author

I tried:

> stack install --profile
> stack exec --profile -- stack --help +RTS -p

The resulting stack.EXE.prof file starts:

	Fri May 26 01:26 2023 Time and Allocation Profiling Report  (Final)

	   stack.EXE +RTS -p -RTS --help

	total time  =        6.30 secs   (6304 ticks @ 1000 us, 1 processor)
	total alloc = 98,348,241,808 bytes  (excludes profiling overheads)

COST CENTRE                           MODULE                          SRC                                                    %time %alloc

layoutWadlerLeijen.best               Prettyprinter.Internal          src\Prettyprinter\Internal.hs:(1993,5)-(2018,76)        42.6   59.3
changesUponFlattening.flatten.\       Prettyprinter.Internal          src\Prettyprinter\Internal.hs:(688,23)-(702,21)         17.6   19.4
layoutSmart.fits.go                   Prettyprinter.Internal          src\Prettyprinter\Internal.hs:(1922,9)-(1931,40)         8.2    0.0
ifElseAtRoot.\                        Options.Applicative.Help.Pretty src\Options\Applicative\Help\Pretty.hs:(56,5)-(59,18)    4.4    6.2
layoutWadlerLeijen.selectNicer        Prettyprinter.Internal          src\Prettyprinter\Internal.hs:(2033,5)-(2035,23)         3.4    1.9
remainingWidth                        Prettyprinter.Internal          src\Prettyprinter\Internal.hs:(1782,1)-(1789,54)         2.8    2.5
column                                Prettyprinter.Internal          src\Prettyprinter\Internal.hs:1186:1-15                  2.6    0.0
changesUponFlattening.flatten         Prettyprinter.Internal          src\Prettyprinter\Internal.hs:(688,5)-(702,21)           2.1    0.0
layoutSmart.fits                      Prettyprinter.Internal          src\Prettyprinter\Internal.hs:(1920,5)-(1948,33)         2.1    5.1
changesUponFlattening.\               Prettyprinter.Internal          src\Prettyprinter\Internal.hs:(662,33)-(684,23)          1.8    1.4
changesUponFlattening                 Prettyprinter.Internal          src\Prettyprinter\Internal.hs:(662,1)-(702,21)           1.8    0.0
layoutSmart.fits.minNestingLevel      Prettyprinter.Internal          src\Prettyprinter\Internal.hs:(1935,9)-(1948,33)         1.7    0.0
layoutSmart.fits.availableWidth       Prettyprinter.Internal          src\Prettyprinter\Internal.hs:1933:9-90                  1.7    2.5
nesting                               Prettyprinter.Internal          src\Prettyprinter\Internal.hs:1197:1-17                  1.5    0.0
layoutWadlerLeijen.initialIndentation Prettyprinter.Internal          src\Prettyprinter\Internal.hs:(2038,5)-(2042,31)         1.5    1.6
ifElseAtRoot.\.\                      Options.Applicative.Help.Pretty src\Options\Applicative\Help\Pretty.hs:(57,7)-(59,18)    1.3    0.0


                                                                                                                                                                                             individual      inherited

and a bit further on in the file:

           renderPretty                                          Options.Applicative.Help.Pretty        src\Options\Applicative\Help\Pretty.hs:30:1-30                 130380           0    0.0    0.0   100.0  100.0
            renderPretty                                         Text.PrettyPrint.ANSI.Leijen           src\Text\PrettyPrint\ANSI\Leijen.hs:(232,1)-(234,92)           130381           1    0.0    0.0   100.0  100.0
             layoutSmart                                         Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:(1908,1)-(1950,55)               130392           1    0.0    0.0   100.0  100.0
              layoutWadlerLeijen                                 Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:(1979,1)-(2042,31)               130393           1    0.0    0.0   100.0  100.0
               layoutWadlerLeijen.best                           Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:(1993,5)-(2018,76)               130394  1258216525   42.6   59.3   100.0  100.0
                layoutWadlerLeijen.best.cc'                      Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:1998:32-42                       134839   194658875    0.0    0.0     0.0    0.0
                layoutWadlerLeijen.best.cc'                      Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:1999:32-42                       134827   125154331    0.0    0.0     0.0    0.0
                layoutWadlerLeijen.best.ij                       Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:2011:32-40                       134905    85117765    0.0    0.0     0.0    0.0
                layoutWadlerLeijen.best.i'                       Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:(2004,32)-(2007,47)              134841    83346803    0.0    0.0     0.0    0.0
                layoutWadlerLeijen.best.x                        Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:2000:32-46                       134842    83346803    0.4    0.0     0.4    0.0
                layoutWadlerLeijen.best.x'                       Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:2012:32-60                       134838    77906479    0.7    0.0     0.7    0.0
                layoutWadlerLeijen.selectNicer                   Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:(2033,5)-(2035,23)               134830    77906479    3.4    1.9    21.7   13.7
                 layoutSmart.fits                                Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:(1920,5)-(1948,33)               134831    77906479    2.1    5.1    16.9   10.1
                  layoutSmart.fits.go                            Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:(1922,9)-(1931,40)               134837   603675092    8.2    0.0     8.2    0.0
                  layoutSmart.fits.availableWidth                Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:1933:9-90                        134832    77906479    1.7    2.5     4.8    5.1
                   remainingWidth                                Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:(1782,1)-(1789,54)               134833    77906479    2.8    2.5     3.1    2.5
                    remainingWidth.columnsLeftInLine             Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:1785:5-50                        134834    77906479    0.1    0.0     0.1    0.0
                    remainingWidth.columnsLeftInRibbon           Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:1786:5-66                        134836    77906479    0.0    0.0     0.0    0.0
                    remainingWidth.ribbonWidth                   Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:(1787,5)-(1789,54)               134835    77906479    0.2    0.0     0.2    0.0
                  layoutSmart.fits.minNestingLevel               Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:(1935,9)-(1948,33)               135357    70310447    1.7    0.0     1.7    0.0
                 layoutWadlerLeijen.initialIndentation           Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:(2038,5)-(2042,31)               135358    70310447    1.5    1.6     1.5    1.6
                layoutWadlerLeijen.best.y'                       Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:2013:32-60                       135356    77906420    0.7    0.0     0.7    0.0
                renderFailure.(...)                              Options.Applicative.Extra              src\Options\Applicative\Extra.hs:346:7-49                      134869           0    0.0    0.0    33.8   27.0
                 execParserPure                                  Options.Applicative.Extra              src\Options\Applicative\Extra.hs:(155,1)-(164,33)              134870           0    0.0    0.0    33.8   27.0
                  parserFailure                                  Options.Applicative.Extra              src\Options\Applicative\Extra.hs:(174,1)-(342,60)              134871           0    0.0    0.0    33.8   27.0
                   parserFailure.\                               Options.Applicative.Extra              src\Options\Applicative\Extra.hs:(175,3)-(181,39)              134872           0    0.0    0.0    33.8   27.0
                    parserFailure.\.h                            Options.Applicative.Extra              src\Options\Applicative\Extra.hs:(175,7)-(180,26)              134873           0    0.0    0.0    33.8   27.0
                     parserFailure.with_context                  Options.Applicative.Extra              src\Options\Applicative\Extra.hs:(209,5)-(210,61)              134874           0    0.0    0.0    33.8   27.0
                      parserFailure.\.h.\                        Options.Applicative.Extra              src\Options\Applicative\Extra.hs:(175,53)-(180,26)             134875           0    0.0    0.0    33.8   27.0
                       parserFailure.usage_help                  Options.Applicative.Extra              src\Options\Applicative\Extra.hs:(227,5)-(234,11)              134876           0    0.0    0.0    33.8   27.0
                        parserUsage                              Options.Applicative.Help.Core          src\Options\Applicative\Help\Core.hs:(268,1)-(274,7)           134877           0    0.0    0.0    33.8   27.0
                         briefDesc                               Options.Applicative.Help.Core          src\Options\Applicative\Help\Core.hs:109:1-27                  135304           0    0.0    0.0    33.8   27.0
                          briefDesc'                             Options.Applicative.Help.Core          src\Options\Applicative\Help\Core.hs:(119,1)-(134,7)           135305           0    0.0    0.0    33.8   27.0
                           foldTree                              Options.Applicative.Help.Core          src\Options\Applicative\Help\Core.hs:(149,1)-(185,33)          135306           0    0.0    0.0    33.8   27.0
                            fmap                                 Options.Applicative.Help.Chunk         src\Options\Applicative\Help\Chunk.hs:32:3-35                  135307           0    0.0    0.0    33.8   27.0
                             groupOrNestLine                     Options.Applicative.Help.Pretty        src\Options\Applicative\Help\Pretty.hs:(68,1)-(69,45)          135308           0    0.0    0.0    33.8   27.0
                              group                              Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:(615,1)-(624,25)                 135309           0    0.0    0.0    24.9   20.8
                               changesUponFlattening             Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:(662,1)-(702,21)                 135310           0    1.8    0.0    24.9   20.8
                                changesUponFlattening.\          Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:(662,33)-(684,23)                135311           0    1.8    1.4     1.8    1.4
                                 ifNotAtRoot                     Options.Applicative.Help.Pretty        src\Options\Applicative\Help\Pretty.hs:(42,1)-(43,17)          135363           0    0.0    0.0     0.0    0.0
                                  ifElseAtRoot                   Options.Applicative.Help.Pretty        src\Options\Applicative\Help\Pretty.hs:(54,1)-(59,18)          135364           0    0.0    0.0     0.0    0.0
                                   nesting                       Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:1197:1-17                        135365           0    0.0    0.0     0.0    0.0
                                changesUponFlattening.flatten    Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:(688,5)-(702,21)                 135312           0    2.1    0.0    21.2   19.4
                                 changesUponFlattening.flatten.\ Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:(688,23)-(702,21)                135313   536932485   17.6   19.4    19.1   19.4
                                  ifNotAtRoot                    Options.Applicative.Help.Pretty        src\Options\Applicative\Help\Pretty.hs:(42,1)-(43,17)          135366           0    0.0    0.0     1.5    0.0
                                   ifElseAtRoot                  Options.Applicative.Help.Pretty        src\Options\Applicative\Help\Pretty.hs:(54,1)-(59,18)          135367           0    0.0    0.0     1.5    0.0
                                    ifElseAtRoot.\               Options.Applicative.Help.Pretty        src\Options\Applicative\Help\Pretty.hs:(56,5)-(59,18)          135368           0    0.3    0.0     1.5    0.0
                                     ifElseAtRoot.\.\            Options.Applicative.Help.Pretty        src\Options\Applicative\Help\Pretty.hs:(57,7)-(59,18)          135370    43888367    0.9    0.0     0.9    0.0
                                     column                      Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:1186:1-15                        135369           0    0.3    0.0     0.3    0.0
                              ifNotAtRoot                        Options.Applicative.Help.Pretty        src\Options\Applicative\Help\Pretty.hs:(42,1)-(43,17)          135315           0    0.0    0.0     8.9    6.2
                               ifElseAtRoot                      Options.Applicative.Help.Pretty        src\Options\Applicative\Help\Pretty.hs:(54,1)-(59,18)          135316           0    0.6    0.0     8.9    6.2
                                ifElseAtRoot.\                   Options.Applicative.Help.Pretty        src\Options\Applicative\Help\Pretty.hs:(56,5)-(59,18)          135318    85117763    4.0    6.2     6.8    6.2
                                 column                          Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:1186:1-15                        135324           0    2.3    0.0     2.7    0.0
                                  ifElseAtRoot.\.\               Options.Applicative.Help.Pretty        src\Options\Applicative\Help\Pretty.hs:(57,7)-(59,18)          135371    41229391    0.4    0.0     0.4    0.0
                                nesting                          Prettyprinter.Internal                 src\Prettyprinter\Internal.hs:1197:1-17                        135317           0    1.5    0.0     1.5    0.0

@HuwCampbell
Copy link
Collaborator

Hmm. This is frustrating.

It seems I have broken a hidden invariant for the renderSmartlayout; and unfortunately, the prettyprinter-ansi-compat library uses the wrong rules for layout smart vs layout pretty.

From prettyprinter-compat-ansi-wl-pprint:

renderPretty :: Float -> Int -> Doc -> SimpleDoc
renderPretty ribbonFraction pageWidth
    = New.layoutSmart New.LayoutOptions
        { New.layoutPageWidth = New.AvailablePerLine pageWidth (realToFrac ribbonFraction) }


renderSmart :: Float -> Int -> Doc -> SimpleDoc
renderSmart ribbonFraction pageWidth
    = New.layoutSmart New.LayoutOptions
        { New.layoutPageWidth = New.AvailablePerLine pageWidth (realToFrac ribbonFraction) }

Note that they're identical, while the first one should be

renderPretty :: Float -> Int -> Doc -> SimpleDoc
renderPretty ribbonFraction pageWidth
    = New.layoutPretty New.LayoutOptions
        { New.layoutPageWidth = New.AvailablePerLine pageWidth (realToFrac ribbonFraction) }

Now it gets worse unfortunately, because in 0.18.0 I also used layoutSmart, so I'll have to do a 0.18.1 release to swap that over; but unfortunately, there's not a whole lot I can do right now for 0.17.1.

I wrote a quickcheck property

prop_variable_or :: ArbParser -> Property
prop_variable_or (ArbParser x) = withMaxSuccess 10000 . within 10000000 $
  total . Doc.smartString 1.0 80 . extractChunk $ H.briefDesc defaultPrefs x

---

newtype ArbParser = ArbParser {
  arbParser :: Parser ()
}

instance Show ArbParser where
  show = Doc.prettyString 1.0 80 . extractChunk . H.briefDesc defaultPrefs . arbParser

instance Arbitrary ArbParser where
  arbitrary =
    ArbParser <$> sized go
      where

    simple = flag' () . long . unShort <$> arbitrary

    go 0 = simple
    go n | n > 0 =
      oneof [
        simple
      , (<|>) <$> sub <*> sub
      ,  (*>) <$> sub <*> sub
      ]
      where sub = go (n `div` 2)


newtype ShortString =
  ShortString { unShort:: String }
  deriving Show

instance Arbitrary ShortString where
  arbitrary = ShortString <$> listOf'
    where
      listOf' =
        do k <- chooseInt (4,20)
           vectorOf k (choose ('a','z'))
*** Failed! Timeout of 10000000 microseconds exceeded. (after 2182 tests):
(--bpouljgkn | (--xdbrxeaoin | --kcdesvnfgznjshh) --mkupifxyhhyhtlrk | 
  (--okttdwavfgqg | --xfrrrwmcjmauhd --eltozxz) 
  (--mxvgwuholi | --fahjpq --cbrdtmvemesqzvralhd) |
  (--zuvfviegngzhgzpre | --swit | --mvrpwsgufmyjkjiik) 
  (--nfutdte | --rkicxhluhp) (--orqawxidhmqxkzsoo | --wmhbgnw) |
  --bltadcfdlcgfcygllblt | --brppdwxaceaijsfk | --hqzpipxjtmmthfy | 
  --nituxfvhqibeuin | --mipfchfq --eiqzggstawlgkrrrpa --myak --mzrgk --ltymu 
  (--uejmz --wyefvhrshj | --qoqow) --ssipxic |
  --akcyguavxulhtvidsbkb | --ojautxojcjtofbfm | --bvlvzekrvkkpyrupzwin | 
  --lwyot | --zvtjvhoa | --fslkrnsz | --gryei | --tgxmfwaoi | --bjtqwjitl | 
  --dapnslxfnltygyo | --ewnucsfdttvl | --cbyj --olzdpvdomryaouqcbs | --nelewss |
  (--fhhyvjjb | --nutrlut) --xafkn --rethndukseyosecbahq | --redb 
  (--udrgvkdxtxmtsdomzgh | --snoevlczcudcbjkuj | --kwmrfnpyvwy | 
    (--ixhawla | --xkjls) --llypzcpwyewmjhni) |
  --cgeleuxcsttb --xdyowwoj)

@HuwCampbell
Copy link
Collaborator

Paging in @quchen

It looks like 2 potential issues here.

  • From prettyprinter-compat-ansi-wl-pprint, the renderPretty function uses the wrong layout algorithm.
  • Render smart is hanging on some inputs (although I may have missed an invariant somewhere).

@HuwCampbell
Copy link
Collaborator

#476

@HuwCampbell
Copy link
Collaborator

quchen/prettyprinter#244

@HuwCampbell
Copy link
Collaborator

I ran renderSmart vs renderPretty with ansi-wl-pprint and I couldn't see a slow down or hang, so I think it's specific to prettyprinter's implementation.

@HuwCampbell
Copy link
Collaborator

I've just built stack with 0.18.0 and the 0.18.1 above and I can confirm it was hanging, but is working fine with the latter (I had to change its custom hsubparser, but that was it).

I'll release a 0.18.1 soon.

@mpilgrem
Copy link
Author

@HuwCampbell, many thanks. My original objective was to move Stack on to the latest optparse-applicative but I started with 0.17.1.0 (because of the custom hsubparser').

Briefly on Stack's custom hsubparser', it is a more general form of hsubparser in that the latter forces the meta variable to be COMMAND while the former allows it to be specified. Essentially, hsubparser = hsubparser' "COMMAND". Would this package be interested in exporting a hsubparser' too? If yes, I'll raise a pull request accordingly.

@HuwCampbell
Copy link
Collaborator

No it only sets COMMAND as the default metavar. You can override it, as while modifiers are a monoid, they are not a commutative one.

Mixing up the Cabal example from the test suite:

parser :: Parser Args
parser = runA $ proc () -> do
  opts <- asA commonOpts -< ()
  cmds <- (asA . hsubparser)
            ( command "install"
              (info installParser
                    (progDesc "Installs a list of packages"))
           <> command "update"
              (info updateParser
                    (progDesc "Updates list of known packages"))
           <> command "configure"
              (info configureParser
                    (progDesc "Prepare to build the package"))
           <> command "build"
              (info buildParser
                    (progDesc "Make this package ready for installation"))
           <> metavar "METHODOLOGIES") -< ()
  A (simpleVersioner "0.0.0") >>> A helper -< Args opts cmds
ghci> Examples.Cabal.main
Missing: METHODOLOGIES

Usage: <interactive> [-v|--verbose LEVEL] METHODOLOGIES

  An example modelled on cabal
*** Exception: ExitFailure 1

@mpilgrem
Copy link
Author

@HuwCampbell, thanks also for that. I see, Stack can simply have:

hsubparser' :: String -> Mod CommandFields a -> Parser a
hsubparser' commandMetavar m = hsubparser (m <> metavar commandMetavar)

@HuwCampbell
Copy link
Collaborator

Candidate is up.
Please test if you can; I'll publish in the next 24h.
https://hackage.haskell.org/package/optparse-applicative-0.18.1.0/candidate

@mpilgrem
Copy link
Author

By way of a test, I built the current master branch version of Stack against the candidate, and stack --help works fine.

@HuwCampbell
Copy link
Collaborator

0.18.1 is up. Thanks for the prompt report.

@kindaro
Copy link

kindaro commented Aug 23, 2023

So could you folks edit the metadata of the broken version on Hackage so that it can never happen to resolve as a dependency? Even though the new version is released, it is still possible to build stuff that depends on optparse-applicative ==0.18.0.0, and it will hang. Out of abundance of caution, since this error is so severe, it would be better if it was impossible.

@HuwCampbell
Copy link
Collaborator

I've updated the metadata for 0.18.0 so it won't be chosen any more.

@kindaro
Copy link

kindaro commented Aug 24, 2023

Thank you Captain Huw!

@HuwCampbell
Copy link
Collaborator

HuwCampbell commented Sep 2, 2023

I'm going to change the bounds on 0.17.1 back to the old library too, as there doesn't appear to be any movement on quchen/prettyprinter#244.

@HuwCampbell
Copy link
Collaborator

The maintainer of prettyprinter has not responded to the PR I have put up, so I've been forced to set 0.17.1 back to using the older ansi-wl-pprint.

This whole situation has been very disappointing.

JackKelly-Bellroy added a commit to JackKelly-Bellroy/dhall-haskell that referenced this issue Oct 19, 2023
optparse-applicative-0.18.0.0 is a deprecated release which used
layoutSmart from package prettyprinter, which causes the runtime blow
up in certain cases.

See: pcapriotti/optparse-applicative#475 (comment)
JackKelly-Bellroy added a commit to JackKelly-Bellroy/dhall-haskell that referenced this issue Oct 19, 2023
optparse-applicative-0.18.0.0 is a deprecated release which used
layoutSmart from package prettyprinter, which causes the runtime to
blow up in certain cases.

See: pcapriotti/optparse-applicative#475 (comment)
@ocramz
Copy link

ocramz commented Sep 2, 2024

Hi all, I just ran into this as well. I'm still narrowing down the issue, but downgrading optparse-applicative didn't seem to help. Tried with GHC 9.6.5 (Stackage LTS 22.22) on a Mac M1. It simply started hanging when I added some new options to the CLI object. Very strange.

@HuwCampbell
Copy link
Collaborator

The issue here was that the pretty printer library has runtime performance well beyond O(n log(n)). I regret moving to it.

I've blacklisted the version which uses the smart layout algorithm explicitly (0.18.) and made hackage updates which restrict 0.17.1 to use the old ansi-wl-pprint instead of the pretty-printer version which has issues.

So yes, sounds strange... I don't think it's the same problem. Stack traces or profiling would be appreciated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants