Ticket #3107 (new bug)

Opened 4 years ago

Last modified 8 months ago

Over-eager GC when blocked on a signal in the non-threaded runtime

Reported by: awick Owned by:
Priority: lowest Milestone: 7.6.2
Component: Runtime System Version: 6.10.1
Keywords: Cc: dons
Operating System: Linux Architecture: Unknown/Multiple
Type of failure: Runtime performance bug Difficulty: Unknown
Test Case: Blocked By:
Blocking: Related Tickets:

Description

Right now, in the non-threaded runtime, if you have the situation where all the threads are blocked on MVars, the deadlock detection / avoidance code runs a GC. This is fine, generally, but if they're blocked on MVars held by signal handlers, it has a profoundly bad effect on performance. In short, the runtime starts collection (blocking signals?), and we're stuck waiting for it to finish before handling signals. Or, if the signal doesn't come in, we sit waiting in a loop, garbage collecting.

It would be nice if the runtime either didn't trigger collection if signal handlers are in place, or, at the very least, held off on doing so for a nontrivial period of time.

Change History

Changed 4 years ago by igloo

  • difficulty set to Unknown
  • type changed from bug to run-time performance bug
  • milestone set to 6.12.1

Thanks for the report

Changed 4 years ago by simonmar

  • failure set to Runtime performance bug

Changed 3 years ago by igloo

  • milestone changed from 6.12.1 to 6.12 branch

Changed 3 years ago by igloo

  • milestone changed from 6.12 branch to 6.12.3

Changed 3 years ago by igloo

  • priority changed from normal to low
  • milestone changed from 6.12.3 to 6.14.1

Changed 2 years ago by igloo

  • milestone changed from 7.0.1 to 7.0.2

Changed 2 years ago by igloo

  • milestone changed from 7.0.2 to 7.2.1

Changed 20 months ago by igloo

  • milestone changed from 7.2.1 to 7.4.1

Changed 15 months ago by igloo

  • priority changed from low to lowest
  • milestone changed from 7.4.1 to 7.6.1

Changed 8 months ago by igloo

  • milestone changed from 7.6.1 to 7.6.2
Note: See TracTickets for help on using tickets.