Ticket #2730 (closed bug: duplicate)

Opened 5 years ago

Last modified 5 years ago

Quasiquote or TH linking may need HPC flag

Reported by: simonpj Owned by:
Priority: normal Milestone: 6.10.2
Component: Compiler Version: 6.10.1
Keywords: Cc:
Operating System: Unknown/Multiple Architecture: Unknown/Multiple
Type of failure: Difficulty: Unknown
Test Case: Blocked By:
Blocking: Related Tickets:

Description

Test quasiquotation/qq005 fails in the hpc way:

'/64playpen/simonpj/builds/HEAD-1/ghc/stage2-inplace/ghc' -fforce-recomp -dcore-lint -dcmm-lint -Dx86_64_unknown_linux  -dno-debug-output -c -o qq005 Main.hs -O -fhpc
Loading package ghc-prim ... linking ... done.
Loading package integer ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
Loading package syb ... linking ... done.
Loading package array-0.2.0.0 ... linking ... done.
Loading package packedstring-0.1.0.1 ... linking ... done.
Loading package containers-0.2.0.0 ... linking ... done.
Loading package pretty-1.0.1.0 ... linking ... done.
Loading package template-haskell ... linking ... done.
Loading package parsec-2.1.0.1 ... linking ... done.
ghc: ./Expr.o: unknown symbol `hs_hpc_module'

I believe the reason is this:

  • Expr.hs contains a quasiquote parser
  • This parser is invoked in Main.hs
  • But Expr.hs is compiled with -fhpc and contains a reference to the RTS function hs_hpc_module
  • When doing dynamic linking of Expr.o (to run the quasiquote parser) the linker can't find hs_hpc_module. (Even though Main.hs is also compiled with -fhpc.

The same thing happens with Template Haskell. (Try running the th tests with the hpc way. Not all tests fail, but some do, with the same error.)

I'm no expert on the dynamic linking part. Is hs_hpc_module (defined in rts/Hpc.c) always part of the RTS? Does it need to be added to a list I vaguely recall, of externally linkable symbols (perhaps RTS_SYMBOLS in rts/Linker.c) [PS: some comments explaining these lists would be v useful]? Or what?

I'll milestone this for 6.10.1, because it does seem a bug that TH and HPC don't mix; but it should probably not hold up the release.

Simon

Change History

Changed 5 years ago by simonpj

  • version changed from 6.8.3 to 6.10.1

Changed 5 years ago by igloo

  • milestone changed from 6.10.1 to 6.10.2

Changed 5 years ago by igloo

  • status changed from new to closed
  • resolution set to duplicate

This is a duplicate of #1779.

Note: See TracTickets for help on using tickets.