Open Bug 1435780 Opened 2 years ago Updated 6 months ago

[Meta] Firefox launcher process

Categories

(Firefox :: Launcher Process, enhancement)

Unspecified
Windows
enhancement
Not set
normal

Tracking

()

People

(Reporter: aklotz, Unassigned)

References

(Depends on 7 open bugs, Blocks 2 open bugs)

Details

(Keywords: meta)

Initially we need to treat this as a prototype to determine performance implications.

The idea is to modify firefox.exe such that its initial invocation is a bootstrap process that creates the "real" browser process in such a way that its injection blocking capabilities are readied before the browser's main thread ever starts.
Some details on things that I want to see from this process:

1. It must pass its environment and command line through to the browser process verbatim (exception: strip out --bootstrap if we go that route (see item 5)).
2. It must provide a process/thread attribute list when creating the browser process, such that we can supply a list of OS-level mitigations to be enabled.
3. It must initially create the browser process in a suspended state, then provide a way to invoke any post-creation initialization on that child process (passing in the new hProcess and hThread so that we can manipulate the child). Once that initialization code has run, we must then resume the initial thread.
4. We should strive to make this as lightweight as possible: let's avoid loading and/or initializing anything that we don't absolutely need.
4a. (This is a follow-up requirement if our initial implementation is costly): We may need to make changes to the existing firefox.exe implementation to further reduce the cost. eg move to run-time dynamic linking of firefox.exe dependencies, readahead, etc.
5. Since we are prototyping, I propose that we make a configure setting to determine whether or not the bootstrap process should be enabled by default. If not by default, we should have some kind of command line switch (--bootstrap or something) to enable our code path.
6. It must have awareness of whether or not we are launching in safe mode.
Blocks: 1435790
Depends on: 1430092
Depends on: 1432653
Depends on: 1445025
Depends on: 1445030
Depends on: 1451511
Depends on: 1454745
Depends on: 1458386
Depends on: 1460433
Depends on: 1460434
Depends on: 1460995
Depends on: 1460996
Depends on: 1460997
Depends on: 1462187
Depends on: 1463483
Depends on: 1468511
Depends on: 1473371
Depends on: 1475067
Depends on: 1477790
Depends on: 1479057
Depends on: 1481546
Depends on: 1481549
Depends on: 1481958
Depends on: 1483687
Depends on: 1485481
Depends on: 1486901
Depends on: 1488546
Depends on: 1488554
Depends on: 1488625
Depends on: 1492865
Summary: [Meta] Firefox bootstrap process → [Meta] Firefox launcher process
Depends on: 1495039
Depends on: 1495040
Depends on: 1495628
Depends on: 1495629
Duplicate of this bug: 1380335
See Also: → 1528173
Depends on: 1528310
Depends on: 1529593
Depends on: 1530541
Depends on: 1564538
Depends on: 1564546
Depends on: 1565828
No longer depends on: 1529593
Depends on: 1599894
You need to log in before you can comment on or make changes to this bug.