Closed Bug 478976 (OOPP) Opened 15 years ago Closed 14 years ago

Electrolysis + plugins tracking

Categories

(Core Graveyard :: Tracking, defect)

defect
Not set
normal

Tracking

(Not tracked)

RESOLVED WORKSFORME

People

(Reporter: jst, Assigned: benjamin)

References

(Depends on 2 open bugs, Blocks 1 open bug)

Details

(Keywords: meta)

This is a tracking bug for making Mozilla run plugins out of process. The rough outline of how we're attempting to do this is as follows.

We're going to ease in to this problem slowly, as it's a very tricky thing to do right across platforms. Chrome does this today, but only in a shipping version on Windows. We'll be sharing as much code as we can with Chrome, and we may selectively run plugins out of process to begin with, and only on select platforms, i.e. only flash on Windows to begin with, or whatever plugin we pick. Ideally we'll be able to share most of the remoting code with Chrome rather than re-inventing that wheel. Once this work is off the ground we'll be looking at running the plugin process(es) in lower rights mode too, and that'll require significant API changes for plugins to work right when run in lower rights mode, not to mention us needing OS APIs to start processes in lower rights mode, on all platforms.

More details and followup bugs to follow...
Can we start with a list of items/bugs that describe what we would like to accomplish with out of process plugins?
Konqueror has been doing that for a while, AFAIK, and two usually quoted benefits they get from it is running 32-bit plugins on 64-bit browser builds and not crashing the browser when the plugin crashes.
Keywords: meta
Summary: Out of process tracking bug. → Tracking bug for out-of-process plugins
There's a thing called "nspluginwrapper" that does out-of-process plugins -- it's primarily aimed at being able to execute 32-bit plugins on a 64-bit browser under Linux, it's not especially reliable, and I have no idea how it works, but it might be worth cribbing for ideas?

http://gwenole.beauchesne.info//en/projects/nspluginwrapper
do we want to add things like bug 348170 for possible test cases to check the implementation against?  remove from dependency if not.
Blocks: 348170
Assignee: nobody → benjamin
No longer blocks: 348170
Depends on: 516515, 516509
OS: Linux → All
QA Contact: chofmann → ipc
Hardware: x86 → All
Summary: Tracking bug for out-of-process plugins → Electrolysis + plugins tracking
Blocks: electrolysis
Depends on: 512694
Depends on: 516524
No longer depends on: 512694
Depends on: 516718
Depends on: 516721
Depends on: 516725
Depends on: 516759
Depends on: 517207
Depends on: 517923
Depends on: 517962
Depends on: 518506
Depends on: 519568
Depends on: 519570
Depends on: 519572
Depends on: 517078
Depends on: 519574
Depends on: 519583
Depends on: 519601
I maintain nspluginwrapper in Fedora. Nspluginwrapper runs NPAPI plugins as separated processes and calls NPAPI functions by custom RPC interface (based on network sockets). Main drawback of the approach is that address space of browser/plugin is separated so nspluginwrapper does not support plug-in scripting, getting NPNVDOMWindow/NPNVDOMElement (by plugin) and some other.
Depends on: 521450
Depends on: 521940
Depends on: 522796
Depends on: 523094
Depends on: 525483
Depends on: 524984
Depends on: 522414
Depends on: 526393
Depends on: 526401
Depends on: 530083
Depends on: 530007
Depends on: 530894
Depends on: 529005
Depends on: 531142
Depends on: 531821
Blocks: 531859
Depends on: 531860
No longer blocks: 531859
Depends on: 531859
Depends on: 534020
Depends on: 534027
Depends on: 532700
Depends on: 534791
No longer depends on: 535106
Depends on: 535207
Depends on: 535295
Depends on: 535327
Depends on: 535615
Depends on: 535829
Depends on: 536188
Depends on: 535687
Depends on: 536369
Depends on: 536437
Depends on: 536303
Depends on: 537310
Depends on: 535016
Depends on: 538586
Depends on: 538902
Depends on: 538914
Depends on: 538918
Depends on: 538990
Depends on: LorentzBeta1
Depends on: 538910
Depends on: 539061
Depends on: 539063
Depends on: 539280
Depends on: 539290
Depends on: 539330
Alias: OOPP
Depends on: 539658
Depends on: 539835
Depends on: 539897
No longer depends on: 525849
Depends on: 540004
Depends on: 535077
Depends on: 540094
Depends on: 540197
Depends on: 540459
Depends on: 540793
Depends on: 541401
Depends on: 441197
Depends on: 542023
Depends on: 542066
Depends on: 542248
Depends on: 542263
Depends on: 540910
Depends on: 542759
Depends on: 542792
Depends on: 542821
Depends on: 542887
Depends on: 542897
Depends on: 542906
Depends on: 535120
Depends on: 543103
Depends on: 543201
Depends on: 543376
Depends on: 534796
Depends on: 537344
Depends on: 543479
Depends on: 542866
Depends on: 543770
Depends on: 543778
Depends on: 543788
Depends on: 543764
Depends on: 543802
Depends on: 543831
Depends on: 543901
Depends on: 543809
Depends on: 543183
Depends on: 544028
Depends on: 544058
Depends on: 544088
Depends on: 542784
Depends on: 544153
Depends on: 544167
Depends on: 544236
Depends on: 535441
Depends on: 544361
Depends on: 544393
Depends on: 544211
Depends on: 544559
Depends on: 544619
Depends on: 544630
Depends on: 544694
Depends on: 544893
Depends on: 544910
Depends on: 545080
Depends on: 545149
Depends on: 545186
Depends on: 545191
Depends on: 545239
Depends on: 545336
Depends on: 545338
Depends on: 545312
Depends on: 539964
Depends on: 544882
Depends on: 545640
Depends on: 545544
Depends on: 545712
Blocks: SM-OOPP
Depends on: 545819
Depends on: 545870
Depends on: 542656
Depends on: 545892
Depends on: 545976
Depends on: 546035
Depends on: 545585
Depends on: 546043
Depends on: 546057
Depends on: 546059
Depends on: 546072
Depends on: 546073
Depends on: 546373
Depends on: 546492
Depends on: 546497
Depends on: 546502
Depends on: 546651
Depends on: 546666
Depends on: 546707
Depends on: LorentzAlpha
Depends on: 546745
Depends on: 546766
Depends on: 544936
Depends on: 547077
Depends on: 547136
Depends on: 547142
Depends on: 547153
Depends on: 547247
Depends on: 547276
No longer depends on: 547077
Depends on: 547316
Depends on: 547353
Depends on: 547359
Depends on: 547894
Depends on: 539138
Depends on: 548344
Depends on: 548434
No longer depends on: 547353
Depends on: 546777
No longer depends on: 545219
Depends on: 548810
Depends on: 548811
Depends on: 540137
Depends on: 548823
Depends on: 550026
Depends on: 550305
Depends on: 550322
Depends on: 547358
Depends on: 550784
Depends on: 551242
Depends on: 551387
Depends on: 551392
Depends on: 551482
No longer depends on: 551482
Depends on: 551875
Depends on: 552114
Depends on: 552111
Depends on: 552051
Depends on: 552126
In the process, of making plugins/addons and tabs as different process, I think it would also be interesting to ensure this processes have appropriated security level, if possible.
It's already stated in https://wiki.mozilla.org/Content_Processes#Goals

For Windows, it would use BIBA model introduces by Internet Explorer on Vista (bug 266533)

On Macosx, it would be the 10.5 sandboxing tools (bug 387248)

On Linux, it could be a good idea to provide some AppArmor/Selinux policies or something else to get good security (maybe related bug 319913 & bug 506693)

Else, it's a really promising evolution.
Depends on: 552163
Depends on: 552305
Depends on: 552062
Depends on: 542053
Depends on: 551508
Depends on: 550034
Depends on: 553592
Depends on: 553606
Depends on: 553371
No longer depends on: 553934
Depends on: 554046
Depends on: 554262
Depends on: LorentzBeta2
Depends on: 555309
Depends on: 555463
Depends on: 551627
Depends on: 555500
No longer depends on: 555505
Depends on: 555699
Depends on: 555289
Depends on: 556026
Depends on: 555889
Depends on: 556643
Depends on: 557533
Depends on: 544518
Depends on: 542701
Depends on: 558070
No longer depends on: 558146
Depends on: 558146
Depends on: 558434
Depends on: 558260
Depends on: 558462
Depends on: 558485
Depends on: 558532
Depends on: 558397
Depends on: 558503
Depends on: 558629
No longer depends on: 558434
Depends on: 558684
Depends on: 559384
Depends on: 559436
Depends on: 559494
Depends on: 559760
Depends on: 560213
Some 'spare time' reading (if we are re-writing everything and want 'the Kitchen Sink'):

Socket45
http://entropymine.com/jason/socket45/

NDISwrapper
http://en.wikipedia.org/wiki/NDISwrapper

GCC_Plugins
http://gcc.gnu.org/wiki/GCC_Plugins


Obviously we would change / limit the functionality to suit our needs.

The above could assist with things like Firebug, Video / Audio / Flash Capture, ntop for Windows, Snort, and other Web Interface Programs, including this nightmare 'Audio on more than one Tab' https://bugzilla.mozilla.org/show_bug.cgi?id=334987 .

Thanks,
Rob
Depends on: 560246
Depends on: 559425
No longer depends on: 559425
Depends on: 560993
Depends on: 558986
Depends on: 561019
Depends on: 560584
Depends on: 561117
Depends on: 561308
Depends on: 561477
Depends on: 561551
Depends on: 561495
Depends on: 561690
Depends on: 561781
Depends on: 561818
Depends on: 561817
Depends on: 561871
Depends on: 562826
Depends on: 563377
Depends on: 563685
Depends on: 564260
Depends on: 564861
No longer depends on: 543376
Depends on: 565286
Depends on: 565292
Depends on: 565282
Depends on: 561075
No longer depends on: 565292
Depends on: 557279
Depends on: 566062
Depends on: 512171
Depends on: 570576
No longer depends on: 547153
Depends on: 572417
Depends on: 574991
Depends on: 574168
This bug has served it's tracking purpose and we're no longer using it.
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → WORKSFORME
Depends on: 579850
Depends on: 588263
Depends on: 596094
No longer depends on: 596094
Depends on: 602502
Depends on: 686673
Depends on: 812922
No longer depends on: 812922
QA Contact: chofmann
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.