Opened 20 months ago

Last modified 20 months ago

#8611 new bug

nofib’s cacheprof’s allocations nondeterminisitic

Reported by: nomeata Owned by:
Priority: normal Milestone:
Component: NoFib benchmark suite Version: 7.6.3
Keywords: Cc:
Operating System: Unknown/Multiple Architecture: Unknown/Multiple
Type of failure: None/Unknown Test Case:
Blocked By: Blocking:
Related Tickets: Differential Revisions:

Description

This seems to be neither expected nor desired, and hence worth investigating:

./cacheprof +RTS -t 
<<ghc: 127588752 bytes, 243 GCs, 2261288/6551032 avg/max bytes residency (6 samples), 15M in use, 0.00 INIT (0.00 elapsed), 0.12 MUT (0.12 elapsed), 0.05 GC (0.05 elapsed) :ghc>>
./cacheprof +RTS -t 
<<ghc: 127392144 bytes, 242 GCs, 2261304/6551576 avg/max bytes residency (6 samples), 15M in use, 0.00 INIT (0.00 elapsed), 0.11 MUT (0.11 elapsed), 0.04 GC (0.05 elapsed) :ghc>>

The allocations numbers change, when they shoudn’t.

Reproduced with 7.6.3 and current HEAD.

Change History (2)

comment:1 Changed 20 months ago by nomeata

I could not find the cause immediately, so I’ll report my partial findings here.

  • It is not the IO part. Inlining the input as one big string, and skipping the output, does not make the symptom disappear.
  • Ticky-ticky profiling yields identical results for the cacheprof modules, the only difference is in the global counters (HEAP_CHK_ctr and STK_CHK_ctr) to be precise.

comment:2 Changed 20 months ago by nomeata

The cause does not seem to be tied to a particular part of the code: Luckily, doFile has a very plain pipeline. The symptoms disappear when I stop at processing with_ccs and appear if I go until with_synth_2. But if I read with_css from a file instead of calculating it and only do the synth_2 call, the result also becomes deterministic. Tricky.

Note: See TracTickets for help on using tickets.