Ticket #4820 (closed bug: invalid)

Opened 2 years ago

Last modified 2 years ago

"Invalid object in isRetainer" when doing retainer profiling in GHC 7 branch

Reported by: dleuschner Owned by:
Priority: high Milestone: 7.0.2
Component: Profiling Version: 7.0.1
Keywords: Cc: wehr@…
Operating System: Linux Architecture: x86_64 (amd64)
Type of failure: Runtime crash Difficulty:
Test Case: Blocked By:
Blocking: Related Tickets:

Description

Now that issue #4362 is fixed I was doing some retainer profiling with the current GHC 7 branch with Bryans patches from #4514 applied. After some clients start connecting to our server it aborts with one of the following messages:

SalviaDerivationGateway_p: internal error: Invalid object in isRetainer(): 39
    (GHC version 7.0.1.20101203 for x86_64_unknown_linux)
    Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug

SalviaDerivationGateway_p: internal error: Invalid object in isRetainer(): 812
    (GHC version 7.0.1.20101203 for x86_64_unknown_linux)
    Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug

SalviaDerivationGateway_p: internal error: scavenge_mark_stack: unimplemented/strange closure type 71648289 @ 0x7f74206961a8
    (GHC version 7.0.1.20101203 for x86_64_unknown_linux)
    Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug

I compiled with -O3 -funbox-strict-fields -prof and tried with and without -threaded but that doesn't make a difference.

Is there anything I could do to help to diagnose the problem? Our test program from #4362 runs fine with retainer profiling. If it is of any help I can install the patched GHC 7 branch and our application onto our test server and give to access to it.

Change History

Changed 2 years ago by simonmar

  • priority changed from normal to high
  • milestone set to 7.0.2

(The submitter told me this is a blocker for them, so we should prioritise looking into it for 7.0.2)

We will need to be able to reproduce it in order to look into it though. If you can find a recipe to reproduce it outside of your test server that would be most useful.

Changed 2 years ago by dleuschner

Does anybody have an idea what could be causing this behavior? Could it have something to do with networking? Or FFI? Or any specific type-system/language feature? Is there anything we should pay attention to? Could the numbers after "isRetainer()" tell us anything? Although we cannot open source our application code at the moment, we of course could send it to you, Simon, so that you could, in principle, reproduce the problem. But unfortunately it's still an awful lot of code and libraries. I would try to write a simple test case but I have no idea what I should include?

Changed 2 years ago by dleuschner

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

I tried, but I cannot reproduce this bug. I also happens with our version of GHC 6.12 (6.12.3 with the fix from  http://trac.haskell.org/network/ticket/9 applied):

SalviaDerivationGateway_p: internal error: Invalid object in isRetainer(): 0
    (GHC version 6.12.4 for x86_64_unknown_linux)
    Please report this as a GHC bug:
      http://www.haskell.org/ghc/reportabug

I'll close the bug for now. (I hope "invalid" is the right resolution.) If we can reproduce this behavior with a simple test program I will reopen.

Changed 2 years ago by simonmar

It's probably a bug in retainer profiling, which is one of the less well-understood and well-tested parts of the runtime system. It's not entirely surprising to find bugs in there. But do keep us posted if you manage to make it reproducible.

Note: See TracTickets for help on using tickets.