Opened 3 years ago

Closed 3 years ago

#9963 closed bug (fixed)

GHCi panic with --print-libdir flag

Reported by: jstolarek Owned by: thomie
Priority: high Milestone: 7.10.1
Component: Driver Version: 7.9
Keywords: Cc:
Operating System: Unknown/Multiple Architecture: Unknown/Multiple
Type of failure: GHCi crash Test Case: driver/T9963
Blocked By: Blocking:
Related Tickets: Differential Rev(s): Phab:D730
Wiki Page:

Description

Reported on GHC devs:

$ ghc-stage2 --print-libdir
/dane/projekty/ghc/build/inplace/lib
$ ghc-stage2 --interactive --print-libdir
ghc-stage2: panic! (the 'impossible' happened)
  (GHC version 7.9.20141222 for x86_64-unknown-linux):
        ghc-stage2: panic! (the 'impossible' happened)
  (GHC version 7.9.20141222 for x86_64-unknown-linux):
        v_unsafeGlobalDynFlags: not initialised

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


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

Does not happen with GHC 7.8.x.

Change History (5)

comment:1 Changed 3 years ago by thomie

Owner: set to thomie

I know what's going on, just need to write a patch.

comment:2 Changed 3 years ago by thomie

Differential Rev(s): Phab:D730
Status: newpatch
Test Case: driver/T9963

comment:3 Changed 3 years ago by Thomas Miedema <thomasmiedema@…>

In 5166ee94e439375a4e6acb80f88ec6ee65476bbd/ghc:

Dont call unsafeGlobalDynFlags if it is not set

Parsing of static and mode flags happens before any session is started,
i.e., before the first call to 'GHC.withGhc'. Therefore, to report
errors for invalid usage of these two types of flags, we can not call
any function that needs DynFlags, as there are no DynFlags available yet
(unsafeGlobalDynFlags is not set either). So we always print "on the
commandline" as the location, which is true except for Api users, which
is probably ok.

When reporting errors for invalid usage of dynamic flags we /can/ make
use of DynFlags, and we do so explicitly in
DynFlags.parseDynamicFlagsFull.

Before, we called unsafeGlobalDynFlags when an invalid (combination of)
flag(s) was given on the commandline, resulting in panics (#9963). This
regression was introduced in 1d6124de.

Also rename showSDocSimple to showSDocUnsafe, to hopefully prevent this
from happening again.

Reviewed By: austin

Differential Revision: https://phabricator.haskell.org/D730

GHC Trac Issues: #9963

comment:4 Changed 3 years ago by thomie

Status: patchmerge

comment:5 Changed 3 years ago by thoughtpolice

Resolution: fixed
Status: mergeclosed

Merged to ghc-7.10 (via f92acd8ed223ebbbf62fab930c6c346f5531d431).

Note: See TracTickets for help on using tickets.