Last Comment Bug 720045 - simplify conservative stack scanner with single-threaded runtime
: simplify conservative stack scanner with single-threaded runtime
Product: Core
Classification: Components
Component: JavaScript Engine (show other bugs)
: unspecified
: All All
-- normal (vote)
: ---
Assigned To: Igor Bukanov
: Jason Orendorff [:jorendorff]
Depends on: 650411 675078
Blocks: 720018 722345 719858 720013
  Show dependency treegraph
Reported: 2012-01-20 16:36 PST by Igor Bukanov
Modified: 2013-09-12 16:20 PDT (History)
12 users (show)
See Also:
Crash Signature:
QA Whiteboard:
Iteration: ---
Points: ---
Has Regression Range: ---
Has STR: ---

v1 (27.95 KB, patch)
2012-01-30 14:59 PST, Igor Bukanov
no flags Details | Diff | Splinter Review

Description User image Igor Bukanov 2012-01-20 16:36:00 PST
+++ This bug was initially created as a clone of Bug #675078 +++

With 675078 fixed we no longer need to record the native stack boundaries in the runtime. As the GC only need to deal with one thread and that thread is current one, we can always query for the native stack bounds directly during the GC.
Comment 1 User image Luke Wagner [:luke] 2012-01-20 16:44:55 PST
The patch in bug 675078 does this.
Comment 2 User image Igor Bukanov 2012-01-20 16:49:43 PST
(In reply to Luke Wagner [:luke] from comment #1)
> The patch in bug 675078 does this.

No, it is not - the patch still stores the base of the native thread in JSRuntime. It is not necessary.
Comment 3 User image Igor Bukanov 2012-01-30 14:59:52 PST
Created attachment 592878 [details] [diff] [review]

The patch always scans the native stack unless it is explicitly disabled via AutoDisableConservativeStackScan class. The latter is a temporary measure to keep the current logic in nsXPConnect::Collect. For now I want to keep this to make sure that in the current form the patch does not increase orange factor due to false positives roots.

To minimize the recorded stack depth the patch requires that any code that needs to scan the stack uses the callback to implements its logic. This way RecordNativeStackTopForGC can use the shallowest stack point when recording the stack. Again, this complication can be reverted if it does not cause extra orange, but for now the main goal is to decouple the conservative stack scanner from the JS request infrastructure.
Comment 4 User image Igor Bukanov 2012-01-31 10:53:25 PST
Comment on attachment 592878 [details] [diff] [review]

Try server shows a leak with the patch
Comment 5 User image :Ms2ger (⌚ UTC+1/+2) 2013-04-07 10:44:47 PDT
I suspect the conservative stack scanner is no longer of much interest at this point.
Comment 6 User image Chris Peterson [:cpeterson] 2013-09-12 16:20:23 PDT
Generational GC (bug 619558) will obsolete the conservative stack scanner.

Note You need to log in before you can comment on or make changes to this bug.