An essential component of the reproducer is that you close ghci after the first :load (which serves only to generate the .o files) and reopen it without -fobject-code, so that the reload of BugA turns it into an interpreted module.

On 30/06/2026 13:53, George Colpitts wrote:
fwiw I can't duplicate on MacOS 26.5.2 and ghc 9.12.5 rc2:

 ghci -fobject-code
Loaded package environment from /Users/gcolpitts/.ghc/aarch64-darwin-9.12.4.20260614/environments/default
GHCi, version 9.12.4.20260614: https://www.haskell.org/ghc/  :? for help
Loaded GHCi configuration from /Users/gcolpitts/.ghci
λ> :load BugC
[1 of 3] Compiling BugA             ( BugA.hs, BugA.o )
[2 of 3] Compiling BugB             ( BugB.hs, BugB.o )
[3 of 3] Compiling BugC             ( BugC.hs, BugC.o )
Ok, three modules loaded.
(0.41 secs,)
λ> bug
ld: warning: duplicate -rpath '/opt/homebrew/Cellar/gcc/15.2.0_1/lib/gcc/current/gcc/aarch64-apple-darwin25/15' ignored
ld: warning: -U option is redundant when using -undefined dynamic_lookup
13
it :: ()
(3.58 secs, 70,664 bytes)
λ> :r
[1 of 3] Compiling BugA             ( BugA.hs, BugA.o ) [Source file changed]
Ok, three modules reloaded.
λ> bug
ld: warning: duplicate -rpath '/opt/homebrew/Cellar/gcc/15.2.0_1/lib/gcc/current/gcc/aarch64-apple-darwin25/15' ignored
ld: warning: -U option is redundant when using -undefined dynamic_lookup
14
it :: ()
(0.34 secs, 67,952 bytes)

On Tue, Jun 30, 2026 at 4:31 AM Evan Laforge <qdunkan@gmail.com> wrote:
On Tue, Jun 23, 2026 at 10:48 AM Evan Laforge <qdunkan@gmail.com> wrote:
>
> On Tue, Jun 23, 2026 at 6:44 AM Zubin Duggal <zubin@well-typed.com> wrote:
> > Which platform/OS are you building on and how did you obtain
> > GHC?
>
> Oh I should have mentioned, it's OSX, 26.5.1.  Obtained via ghcup, and
> using the "ghcup" channel rather than vanilla.
>
> However, I just tested this with linux on a GCP VM and ghc 9.10.3 and
> I still see the issue.  One thing, I see in your non-reproduction that
> it says "[1 of 3] Compiling BugA             ( BugA.hs, BugA.o )",
> which implies -fobject-code is still on.  The bug only seems to happen
> when you are in bytecode mode, but there are .o files available to
> load, so you'd have to restart ghci without -fobject-code.

Hate to nag but... has anyone managed to reproduce it?  I can make it
happen on linux and OSX, and I can verify that it doesn't happen in
9.2.8, and that it starts happening at 9.4.  I believe this is when
ghc got a new recompilation avoidance mechanism that was supposed to
use hashes instead of mtimes, so that's my guess about what introduced
it.

I guess I can go ahead and file a bug on gitlab now.  I'm pretty sure
now it's a bug so I guess I don't need to wait for someone else to
repro but it would be nice to verify...

Since permanently leaving on -fobject-code seems to be a workaround
and processors are so fast now, I may just leave that flag on now.
I'm surprised more people haven't run into this problem in the years
since 9.4.
_______________________________________________
Haskell-Cafe mailing list -- haskell-cafe@haskell.org
To (un)subscribe, modify options or view archives go to:
Only members subscribed via the mailman list are allowed to post.

_______________________________________________
Haskell-Cafe mailing list -- haskell-cafe@haskell.org
To (un)subscribe, modify options or view archives go to:
Only members subscribed via the mailman list are allowed to post.