gencgc: bogus memory fault handling
authorNikodemus Siivola <nikodemus@random-state.net>
Wed, 7 Dec 2011 10:24:54 +0000 (12:24 +0200)
committerNikodemus Siivola <nikodemus@random-state.net>
Wed, 7 Dec 2011 17:31:28 +0000 (19:31 +0200)
commitf9d8d47a583b45efde9f6b6f4801ea34ed45df7d
tree6e38e81770c588702a6a62f6d07c868133d3665c
parent6e5b6733f33fb798226931aa4cfb370d8811d1a2
gencgc: bogus memory fault handling

 Add more debugging information when a bogus memory fault occurs,
 and two control variables:

  continue_after_memoryfault_on_unprotected_page
  ignore_memoryfaults_on_unprotected_pages

 The first just prevents us from lose()ing. Set it in darwin_init() as we
 genuinely appear to get bogus memory faults in threaded code from the kernel,
 which point to unprotected boxed pages. They are possibly something we could
 filter out in catch_exception_raise... but don't see how. Experimentally
 continuing after such them seems harmless, so let's try that but make it
 noisy.

 The second one silences the debugging output completely. Not set currently at
 all.
src/runtime/gencgc-internal.h
src/runtime/gencgc.c