summaryrefslogtreecommitdiffstats
path: root/chrome/app/chrome_main.cc
Commit message (Collapse)AuthorAgeFilesLines
* App: Make sure unexpected exit paths generate crash dumps for any process.rvargas@chromium.org2013-08-271-1/+8
| | | | | | | | | | | | | | | | | Right now it is possible for some random code to directly terminate some process (most notably the browser) without generating a crash dump. This CL moves r217049 to a place where it covers any process type while at the same type is Chrome-specific (not part of content). It is a 'minimal patch' designed to be applied to and older branch. BUG=275818 TEST=none R=thestig@chromium.org Review URL: https://chromiumcodereview.appspot.com/23190042 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@219702 0039d316-1c4b-4281-b951-d872f2087c98
* Support sharing of ContentMain and BrowserMain code with embedded use cases ↵marshall@chromium.org2012-02-101-2/+2
| | | | | | | | | | | | | | | | | | | | (try #3). For the browser use case it is convenient to have a single ContentMain entry point function that handles all initialization, run and shutdown. For embedded use cases it is often necessary to integrate with existing application message loops where initialization and shutdown must be handled separately. To support sharing of this code the following changes were required: 1. Refactor the ContentMain function to create a ContentMainRunner class containing separate initialization, run and shutdown functions. 2. Refactor the BrowserMain function and BrowserMainLoop class to create a BrowserMainRunner class containing separate initialization, run and shutdown functions. 3. Add a new BrowserMainParts::GetMainMessageLoop method. This is necessary to support creation of a custom MessageLoop implementation while sharing BrowserMainRunner initialization and shutdown code. BUG=112507 TEST=none Review URL: https://chromiumcodereview.appspot.com/9375017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@121454 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 121236 - Support sharing of ContentMain and BrowserMain code with ↵marshall@chromium.org2012-02-091-2/+2
| | | | | | | | | embedded use cases (try #2). Tests failing. Review URL: https://chromiumcodereview.appspot.com/9372027 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@121245 0039d316-1c4b-4281-b951-d872f2087c98
* Support sharing of ContentMain and BrowserMain code with embedded use cases ↵marshall@chromium.org2012-02-091-2/+2
| | | | | | | | | | | | | | | | | | | | (try #2). For the browser use case it is convenient to have a single ContentMain entry point function that handles all initialization, run and shutdown. For embedded use cases it is often necessary to integrate with existing application message loops where initialization and shutdown must be handled separately. To support sharing of this code the following changes were required: 1. Refactor the ContentMain function to create a ContentMainRunner class containing separate initialization, run and shutdown functions. 2. Refactor the BrowserMain function and BrowserMainLoop class to create a BrowserMainRunner class containing separate initialization, run and shutdown functions. 3. Add a new BrowserMainParts::GetMainMessageLoop method. This is necessary to support creation of a custom MessageLoop implementation while sharing BrowserMainRunner initialization and shutdown code. BUG=112507 TEST=none Review URL: https://chromiumcodereview.appspot.com/9347022 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@121236 0039d316-1c4b-4281-b951-d872f2087c98
* Revert "Support sharing of ContentMain and BrowserMain code with embedded ↵evan@chromium.org2012-02-061-2/+2
| | | | | | | | use cases." This reverts commit r120574. Test failures. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@120581 0039d316-1c4b-4281-b951-d872f2087c98
* Support sharing of ContentMain and BrowserMain code with embedded use cases.marshall@chromium.org2012-02-061-2/+2
| | | | | | | | | | | | | | | | | | For the browser use case it is convenient to have a single ContentMain entry point function that handles all initialization, run and shutdown. For embedded use cases it is often necessary to integrate with existing application message loops where initialization and shutdown must be handled separately. To support sharing of this code the following changes were required: 1. Refactor the ContentMain function to create a ContentMainRunner class containing separate initialization, run and shutdown functions. 2. Refactor the BrowserMain function and BrowserMainLoop class to create a BrowserMainRunner class containing separate initialization, run and shutdown functions. 3. Add a new BrowserMainParts::GetMainMessageLoop method. This is necessary to support creation of a custom MessageLoop implementation while sharing BrowserMainRunner initialization and shutdown code. BUG=112507 TEST=none Review URL: https://chromiumcodereview.appspot.com/9190018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@120574 0039d316-1c4b-4281-b951-d872f2087c98
* GTTF: Make browser_tests self-contained on Linux.phajdan.jr@chromium.org2011-10-061-709/+2
| | | | | | | | | | | | | | | Windows will follow very soon, just proceeding in small steps. Previously Linux browser_tests were launching chrome binary, and Windows called PathService::Override for no reason. Mac is going to be _much_ harder. BUG=none Review URL: http://codereview.chromium.org/8178004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@104364 0039d316-1c4b-4281-b951-d872f2087c98
* Remove RenderProcessHost::is_extension_processjochen@chromium.org2011-10-051-24/+15
| | | | | | | | | | | | Also move the --process=extension command line flag to --extension-process BUG=89642 TEST=everything still works Review URL: http://codereview.chromium.org/8113035 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@104173 0039d316-1c4b-4281-b951-d872f2087c98
* [Mac] Enable CrZombie for subprocesses in release builds.shess@chromium.org2011-10-051-7/+8
| | | | | | | | | | | | EOM. BUG=94551 TEST=none Review URL: http://codereview.chromium.org/8133008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@104068 0039d316-1c4b-4281-b951-d872f2087c98
* Fixed aura dependencies to not include gtk but bring indavemoore@chromium.org2011-10-051-1/+4
| | | | | | | | | | | necessary X libraries BUG=97131 TEST=None Review URL: http://codereview.chromium.org/8118027 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@104050 0039d316-1c4b-4281-b951-d872f2087c98
* Update Breakpad to r842, picking up:mark@chromium.org2011-10-031-5/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ------------------------------------------------------------------------ r842 | mark@chromium.org | 2011-10-03 15:54:28 -0400 (Mon, 03 Oct 2011) | 11 lines Use a bootstrap subset port for the inspector, tying the subset to the lifetime of the task to be monitored, the invoking task. This allows the bootstrap server (in launchd) to automatically clean up the Mach server registration when the task being monitored exits, avoiding leaks of com.Breakpad.Inspector(pid) ports in "launchctl bslist". BUG=chromium:28547 TEST=Handler should still crash catches, but inspector ports should no longer show up in "launchctl bslist". They should show up under a subset port in "launchctl bstree" instead. "launchctl bstree" must be invoked as root. Review URL: http://breakpad.appspot.com/306001 ------------------------------------------------------------------------ This gives each Breakpad instance its own bootstrap subset port as a subset of the process' bootstrap port, and places the Breakpad inspector port into the bootstrap subset port. This completely eliminates leaks of on-demand Mach services advertised via the bootstrap server. This also reverts r34318 and r34534, "temporary" (21-month) hacks to mitigate the leak. The temporary hacks were never completely effective against Breakpad ports leaking from child processes. DestructCrashReporter at process shutdown was deemed unnecessary and is being removed. As this was the last caller to that function, the implementation is removed as well. This is addressed in Breakpad rather than Chrome because a mechanism to fix it without changing the process' bootstrap port was discovered. It was determined that the rohitfork port is already immune to leaks of the sort that the Breakpad inspector port experiences. A previous attempt to fix this bug was r103089, but that caused bug 98550. This strategy is safer. The forked Breakpad module.cc is updated to match upstream r835, which allows the unforking of the CFI-disabling code. A new CFI-disabling "-c" option to dump_syms is now available and used by the dump_product_syms script. BUG=28547 TEST=1. "launchctl bslist" should no longer show on-demand com.Breakpad.Inspector ports (in Breakpad-enabled builds with Breakpad on) ports. 2. "launchctl bstree" (as root) should reveal a bootstrap subset for each process as a child of the per-user/per-session bootstrap namespace if crash reporting is on. One com.Breakpad.Inspector port should show up as a child of each bootstrap subset. As each process exits (even if mercilessly killed by "kill -9"), the associated subsets and inspector ports should disappear. 3. Breakpad reports should be generated on crashes. For example, about:crash and about:inducebrowsercrashforrealz should each cause a minidump to be written in ~/Library/Application Support/Google/Chrome/Crash Reports when Breakpad is enabled. This tests that the Breakpad ports are functioning properly. 4. The browser process should be able to access child process data. Window:Task Manager should show valid values for the Memory, CPU, and Network columns for all child processes. This tests that the rohitfork port is functioning properly. Note that this version of the change does not change the handling of rohitfork ports at all, but this test case was useful in a previous version of this patch. 5. Test case from bug 98550: Have a link in a web browser window (in a different browser) and drag it into Chrome. Expect the drag operation to operate properly in both the tab strip and in web content. See bug 98550 for details. 6. Unreported test case that failed in r103089: browser relaunch should work. Visit chrome://flags, change some flags to get the "Relaunch Now" button at the bottom (you can put the flags back to how you found them initially), and click "Relaunch Now". The browser should close and then be relaunched. Review URL: http://codereview.chromium.org/8120007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@103778 0039d316-1c4b-4281-b951-d872f2087c98
* Get rid of the profile import process code, and instead go through the ↵jam@chromium.org2011-10-031-6/+0
| | | | | | | | utility process like the rest of our tasks that we want to run outside the browser. When that code was first written, we didn't have the utility process. Review URL: http://codereview.chromium.org/8108001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@103714 0039d316-1c4b-4281-b951-d872f2087c98
* Clean up DEPS rules against content so that not all chrome code can include ↵jam@chromium.org2011-09-301-1/+1
| | | | | | | | | anything from content. I also moved ChromeContentPluginClient to chrome\plugin where it really belongs (i.e. to match what we do with the utility client). Review URL: http://codereview.chromium.org/8095011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@103569 0039d316-1c4b-4281-b951-d872f2087c98
* Back out trunk r103089 because it caused bug 98550.mark@chromium.org2011-09-291-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Give each process its own bootstrap subset port as a subset of its inherited bootstrap port, and use the bootstrap subset port as the bootstrap port. This completely eliminates leaks of on-demand Mach services advertised via the bootstrap server. This also reverts r34318 and r34534, "temporary" (21-month) hacks to mitigate the leak. The temporary hacks were never completely effective against Breakpad ports leaking from child processes. DestructCrashReporter at process shutdown was deemed unnecessary and is being removed. As this was the last caller to that function, the implementation is removed as well. This is addressed in Chrome rather than Breakpad to account for the potential leak of rohitfork ports if the browser process crashes or is mercilessly killed, because library code messing with the task's bootstrap port doesn't strike me as kosher, and because the Mac Breakpad code is scheduled to be replaced with something better that doesn't attempt to leak ports like a sieve within a couple of months anyway. BUG=28547, 98550 TEST=1. "launchctl bslist" should no longer show on-demand com.Breakpad.Inspector ports (in Breakpad-enabled builds with Breakpad on) or com.google.Chrome.rohitfork, com.google.Chrome.canary.rohitfork, or org.chromium.Chromium.rohitfork ports. 2. "launchctl bstree" (as root) should reveal a bootstrap subset for the browser process as a child of the per-user/per-session bootstrap namespace containing the rohitfork port and browser's Breakpad port if crash reporting is on. There should also be a bootstrap subset for each child process as a child of the browser's bootstrap subset. If crash reporting is on, each child process' bootstrap subset should contain a Breakpad port. 3. Breakpad reports should be generated on crashes. For example, about:crash and about:inducebrowsercrashforrealz should each cause a minidump to be written in ~/Library/Application Support/Google/Chrome/Crash Reports when Breakpad is enabled. This tests that the Breakpad ports are functioning properly. 4. The browser process should be able to access child process data. Window:Task Manager should show valid values for the Memory, CPU, and Network columns for all child processes. This tests that the rohitfork port is functioning properly. Review URL: http://codereview.chromium.org/8059041 TBR=mark@chromium.org Review URL: http://codereview.chromium.org/8086003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@103303 0039d316-1c4b-4281-b951-d872f2087c98
* Give each process its own bootstrap subset port as a subset of its inheritedmark@chromium.org2011-09-281-5/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | bootstrap port, and use the bootstrap subset port as the bootstrap port. This completely eliminates leaks of on-demand Mach services advertised via the bootstrap server. This also reverts r34318 and r34534, "temporary" (21-month) hacks to mitigate the leak. The temporary hacks were never completely effective against Breakpad ports leaking from child processes. DestructCrashReporter at process shutdown was deemed unnecessary and is being removed. As this was the last caller to that function, the implementation is removed as well. This is addressed in Chrome rather than Breakpad to account for the potential leak of rohitfork ports if the browser process crashes or is mercilessly killed, because library code messing with the task's bootstrap port doesn't strike me as kosher, and because the Mac Breakpad code is scheduled to be replaced with something better that doesn't attempt to leak ports like a sieve within a couple of months anyway. BUG=28547 TEST=1. "launchctl bslist" should no longer show on-demand com.Breakpad.Inspector ports (in Breakpad-enabled builds with Breakpad on) or com.google.Chrome.rohitfork, com.google.Chrome.canary.rohitfork, or org.chromium.Chromium.rohitfork ports. 2. "launchctl bstree" (as root) should reveal a bootstrap subset for the browser process as a child of the per-user/per-session bootstrap namespace containing the rohitfork port and browser's Breakpad port if crash reporting is on. There should also be a bootstrap subset for each child process as a child of the browser's bootstrap subset. If crash reporting is on, each child process' bootstrap subset should contain a Breakpad port. 3. Breakpad reports should be generated on crashes. For example, about:crash and about:inducebrowsercrashforrealz should each cause a minidump to be written in ~/Library/Application Support/Google/Chrome/Crash Reports when Breakpad is enabled. This tests that the Breakpad ports are functioning properly. 4. The browser process should be able to access child process data. Window:Task Manager should show valid values for the Memory, CPU, and Network columns for all child processes. This tests that the rohitfork port is functioning properly. Review URL: http://codereview.chromium.org/8059041 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@103089 0039d316-1c4b-4281-b951-d872f2087c98
* Move plugin loading out of process on Mac and Linux.rsesek@chromium.org2011-09-271-2/+5
| | | | | | | | | | | | | | This creates a new set of IPC messages for the utility process to load plugins to get the WebPluginInfo data in a separate process. Previously this was done in the browser process, but that involves loading arbitrary third-party code into the address space and then executing it. BUG=17863,95114 TEST=Plugins work as before. Review URL: http://codereview.chromium.org/7889025 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@102971 0039d316-1c4b-4281-b951-d872f2087c98
* Linux: Fix crash reporting for GPU and plugin processes.thestig@chromium.org2011-09-191-7/+6
| | | | | | | | BUG=96631 TEST=none Review URL: http://codereview.chromium.org/7931005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@101779 0039d316-1c4b-4281-b951-d872f2087c98
* Move the V8 benchmarking_extension.cc/.h files out of webkit/extensions into ↵ananta@chromium.org2011-09-151-0/+5
| | | | | | | | | | | | | | | | | | | chrome as the functionality exposed by this extension is chrome specific. The IPCs used by this extension have all been moved to chrome to a new header file benchmarking_messages.h in chrome\common. Added a new message filter object in chrome\browser which filters the benchmarking IPCs. Most of the changes in this CL are centered around ensuring that the benchmarking stuff gets initialized in the same order as before. Continuing changes to get rid of the pattern of IPC messags spanning across content and chrome. BUG=87335 Review URL: http://codereview.chromium.org/7885013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@101214 0039d316-1c4b-4281-b951-d872f2087c98
* export RendererMain from content so that it will get picked up properly by ↵dpranke@chromium.org2011-09-131-1/+1
| | | | | | | | | | | chrome_main. R=jam@chromium.org BUG=90442 Review URL: http://codereview.chromium.org/7841009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@100809 0039d316-1c4b-4281-b951-d872f2087c98
* Basic scaffolding for a "content shell", i.e. test browser over the content ↵jam@chromium.org2011-09-121-2/+2
| | | | | | | | | | | module. Once it's working, this will allow developers working on the core chrome code/web platform/networking etc to test their changes on a much smaller and hence faster to build/run/debug browser. This doesn't do anything yet because it's blocked on having TabContentsView implementations in content. BUG=90445 Review URL: http://codereview.chromium.org/7857019 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@100778 0039d316-1c4b-4281-b951-d872f2087c98
* Make the NaCl windows 64 bit binaries not depend on chrome targets. These ↵jam@chromium.org2011-09-121-16/+0
| | | | | | | | | | | | | targets are very simple and used little code from chrome targets. However their dependency on chrome targets was problematic because a lot of code wasn't being built for 64 bit on Windows, and so there were a lot of "dummy" files being added with stub functions and code was also being compiled out in random places for NACL_WIN64. I've made the NaCl 64 bit windows targets self contained. They do use a few files from common, but those files are self-contained. In the future, we could move these to be in the same 64 bit target as the constants from common. However that won't make a maintenance difference since someone could still introduce link dependencies to other files in common. Additionally, since we're not using chrome code anymore, we can avoid having both nacl.exe and nacl.dll. nacl.exe is sufficient, and this saves 1.4MB of uncompresed binaries in the installer. BUG=86322 Review URL: http://codereview.chromium.org/7863024 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@100767 0039d316-1c4b-4281-b951-d872f2087c98
* Start moving code from BrowserMain to content, so that it can be reused by ↵jam@chromium.org2011-09-071-55/+9
| | | | | | | | all embedders of content. I've based the refactoring on the existing BrowserMainParts. This is the first step; I didn't want to do it all at the same time because it would be too big. Remaining tasks:-rename the browser_main files in chrome to chrome_browser_main-move the OS specific implementations of BrowserMainParts that are needed for content-finish splitting the remaining BrowserMain function (now that's in TemporaryContinue())BUG=90445 Review URL: http://codereview.chromium.org/7779040 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@99884 0039d316-1c4b-4281-b951-d872f2087c98
* Get rid of unnecessary chrome_main_ files now that most of the code has been ↵jam@chromium.org2011-09-061-4/+55
| | | | | | | | removed from them. I just kept the Mac one since we need a file that can include objective c files. Review URL: http://codereview.chromium.org/7779018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@99836 0039d316-1c4b-4281-b951-d872f2087c98
* [Mac] Enable CrZombie for all processes.shess@chromium.org2011-09-061-0/+3
| | | | | | | | | | | | For the browser process, this will be overridden by -[BrowserCrApplication init] (which raises it). BUG=94551 TEST=Developers don't complain about zombie objects in other processes. Review URL: http://codereview.chromium.org/7826016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@99754 0039d316-1c4b-4281-b951-d872f2087c98
* Fix official Linux builds, empty() instead of is_empty()jam@chromium.org2011-09-021-1/+1
| | | | git-svn-id: svn://svn.chromium.org/chrome/trunk/src@99455 0039d316-1c4b-4281-b951-d872f2087c98
* Finish moving all the generic startup code from ChromeMain to ContentMain, ↵jam@chromium.org2011-09-021-499/+295
| | | | | | | | | and add callbacks to ContentMainDelegate to handle the Chrome specific pieces. BUG=90445 Review URL: http://codereview.chromium.org/7792080 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@99452 0039d316-1c4b-4281-b951-d872f2087c98
* Start moving ChromeMain code to content so it can be reused by other ↵jam@chromium.org2011-09-011-56/+66
| | | | | | | | | embedders. I've only moved a little bit of the code for now, and will do the rest in followup changes. BUG=90445 Review URL: http://codereview.chromium.org/7817015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@99193 0039d316-1c4b-4281-b951-d872f2087c98
* Simplify chrome_exe_main_*.cc, moving as much of the code out as possible. ↵jam@chromium.org2011-08-311-0/+4
| | | | | | | | This is in preparation for moving the code in ChromeMain (and associated platform files) to a common place that can be used by both chrome and other embedders of content (i.e. content_shell). Included is a change to make the sandbox code not need an AtExitManager. This is necessary because content_shell would be just one exe, and we'd need to initialize the sandbox before calling ChromeMain, which is what would creat AtExitManager.I removed the code that printed the tcmalloc stacks in the OOM handler (i.e. r33993) under Windows. The issue is I wanted to move the OOM handling code to base to match the other platforms (in a long string of changes to make the startup code more sane, so I can share it with a browser built over content). When I tried moving the tcmalloc code to base, then I ran into a bunch of linker errors because a bunch of targets that depend on base don't depend on allocator. When I tried to add that to base, I ran into strange gyp errors (see patchset 2). I asked Jim/Eric and they said they don't use this data from dumps, and that most of the OOM minimdumps are in v8 heap anyways. When James get back, if he still uses this I can figure out how to put this back.BUG=90445 Review URL: http://codereview.chromium.org/7810005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@99032 0039d316-1c4b-4281-b951-d872f2087c98
* Initialize the resource bundle now that it is used due to ↵levin@chromium.org2011-08-291-0/+4
| | | | | | | | | | http://trac.webkit.org/changeset/93879. TEST=SharedWorker ui tests all crash on OSX after the WebKit roll without this. Review URL: http://codereview.chromium.org/7777004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@98595 0039d316-1c4b-4281-b951-d872f2087c98
* Make ChildProcessHost::GetChildPath append the Mac feature suffixes ("NP" andmark@chromium.org2011-08-241-6/+6
| | | | | | | | | | | | | | "EH") even when launching a child passed in via switches::kBrowserSubprocessPath. This allows browser_tests to operate even with the strict process type checks in ChromeMain. BUG=90221, 93551 TEST=browser_tests (for example, PrerenderBrowserTest.PrerenderDelayLoadPlugin) Review URL: http://codereview.chromium.org/7718024 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@98034 0039d316-1c4b-4281-b951-d872f2087c98
* Minor tree-fixing follow-ups for the executable-heap/no-PIE fix (r97984).mark@chromium.org2011-08-241-6/+6
| | | | | | | | BUG=90221, 93551 TEST=everything Review URL: http://codereview.chromium.org/7718023 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@97989 0039d316-1c4b-4281-b951-d872f2087c98
* Give plug-in processes an executable heap and disable PIE/ASLR for Nativemark@chromium.org2011-08-241-3/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Client loader processes. Some plug-ins depend on having an executable heap. They write code to data pages and attempt to execute it without calling mprotect to mark this code as executable. Native Client needs to allocate a contiguous 1GB of address space. ASLR may interfere with there being a "hole" this large in the address space by the time NaCl makes its request. Non-executable heaps are only available in 10.7 and later for 32-bit processes. PIE/ASLR was formerly disabled for all processes other than the browser process. This change reenables it for all processes other than the NaCl loader. PIE/ASLR is available on 10.5 and later, although the implementation is stronger in 10.7 than in earlier releases. This change results in two new helpers in addition to the existing Chromium Helper.app: Chromium Helper EH.app (for executable heaps) and Chromium Helper NP.app (for no PIE). libplugin_carbon_interpose.dylib moves out of the helper .app and directly into the versioned directory. The InfoPlist.strings have been removed from the helper app, but empty .lproj directories remain. BUG=90221, 93551 TEST=everything Review URL: http://codereview.chromium.org/7714018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@97984 0039d316-1c4b-4281-b951-d872f2087c98
* Trying again to land OOM priority manager changes.gspencer@google.com2011-08-231-16/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | First landing failed because of an obscure problem with building linux_shared. This change passes the linux_shared trybot (and linux and linux_chromeos trybots). Changing OOM range to 0, 1000 and tweaking OOM algorithm. With this change, we now use the newer oom_score_adj file (with fallback to oom_adj when on a system that doesn't support it) so that we can take advantage of a finer range ([0, 1000] instead of [0, 15]). Also tweaked the OOM priority manager to prioritize things in a slightly different order, preferring (even more) not to kill tabs that the user has currently selected. Original review: http://codereview.chromium.org/7671033/ BUG=chromium-os:18421, chromium:65009 TEST=Ran on device, observed OOM adj values, forced OOM conditions to watch kills. Review URL: http://codereview.chromium.org/7708020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@97888 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 97724 - Changing OOM range to 0, 1000 and tweaking OOM algorithm.mattm@chromium.org2011-08-221-31/+16
| | | | | | | | | | | | | | | | | | | | | With this change, we now use the newer oom_score_adj file (with fallback to oom_adj when on a system that doesn't support it) so that we can take advantage of a finer range ([0, 1000] instead of [0, 15]). Also tweaked the OOM priority manager to prioritize things in a slightly different order, preferring (even more) not to kill tabs that the user has currently selected. BUG=chromium-os:18421, chromium:65009 TEST=Ran on device, observed OOM adj values, forced OOM conditions to watch kills. Review URL: http://codereview.chromium.org/7671033 TBR=gspencer@google.com Review URL: http://codereview.chromium.org/7685030 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@97728 0039d316-1c4b-4281-b951-d872f2087c98
* Changing OOM range to 0, 1000 and tweaking OOM algorithm.gspencer@google.com2011-08-221-16/+31
| | | | | | | | | | | | | | | | | | With this change, we now use the newer oom_score_adj file (with fallback to oom_adj when on a system that doesn't support it) so that we can take advantage of a finer range ([0, 1000] instead of [0, 15]). Also tweaked the OOM priority manager to prioritize things in a slightly different order, preferring (even more) not to kill tabs that the user has currently selected. BUG=chromium-os:18421, chromium:65009 TEST=Ran on device, observed OOM adj values, forced OOM conditions to watch kills. Review URL: http://codereview.chromium.org/7671033 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@97724 0039d316-1c4b-4281-b951-d872f2087c98
* Don't load third-party code from any of the following locations:mark@chromium.org2011-08-191-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Prefixes: ~/Library /Library /Network/Library Suffixes: Application Support/SIMBL/Plugins Contextual Menu Items InputManagers ScriptingAdditions Hosting parasitic third-party code in our application is the cause of instability which has only increased since the release of Mac OS X 10.7 ("Lion"). This replaces an earlier version of the change that only blocked NSBundle loads. This version blocks CFBundle loads. NSBundle uses CFBundle to load modules internally, so the NSBundle code is removed. The earlier version was only operative in the browser process. This version is active in all process types. Some blocked modules may result in messages being logged to the system console, such as: Google Chrome: OpenScripting.framework - can't find entry point (EntryPointName) in scripting addition /Library/ScriptingAdditions/... Google Chrome[12345:678] Cannot find function pointer (EntryPointName) for factory (UUID) in CFBundle/CFPlugin (address) </Library/Contextual Menu Items/...> (not loaded) BUG=90193 TEST=Crash less? Watch the stats. Make sure that things in /Library/Contextual Menu Items, /Library/InputManagers, and /Library/ScriptingAdditions aren't loaded into the process. Any functionality they provide should be absent from Chrome. Any crashes they provide should be absent as well. Review URL: http://codereview.chromium.org/7694008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@97497 0039d316-1c4b-4281-b951-d872f2087c98
* Remove extrenuous include that snuck in as part of r94279jeremy@chromium.org2011-07-281-1/+0
| | | | | | | | | | | BUG=None TEST=None TBR=mark@chromium.org Review URL: http://codereview.chromium.org/7520025 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@94446 0039d316-1c4b-4281-b951-d872f2087c98
* [Mac] Make Chrome not delay system sleepjeremy@chromium.org2011-07-271-4/+17
| | | | | | | | | | | | | | | | Some processes [e.g. the GPU process] do not set up a SystemMonitor object, since the startup code was changed to always allocate the Power notification IO port [http://codereview.chromium.org/7235023/] these processes were causing a delay in sleep as the power manager was trying to contact the process. This change whitelists the IO port allocation in ChromeMain() to only include process types that allocate a SystemMonitor which fixes the sleep issue. If a process not in the whitelist attempts to use the SystemMonitor it will hit a DCHECK in a debug build and the error will be ignored in release (see SystemMonitor::PlatformInit()). BUG=88867 TEST=When Chrome is running, Macs should sleep immediately. Review URL: http://codereview.chromium.org/7491038 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@94279 0039d316-1c4b-4281-b951-d872f2087c98
* Updated comment per feedback from mark onkbr@chromium.org2011-07-271-2/+1
| | | | | | | | | | | http://codereview.chromium.org/7458009 . BUG=none TEST=none TBR=mark Review URL: http://codereview.chromium.org/7465062 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@94228 0039d316-1c4b-4281-b951-d872f2087c98
* Initialize the sandbox earlier in GPU process bringup, deferring anykbr@google.com2011-07-221-1/+0
| | | | | | | | | | | | errors until receipt of the first IPC message. Tested by running WebGL content with this patch on Mac and Windows. BUG=84650 TEST=none Review URL: http://codereview.chromium.org/7458009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@93676 0039d316-1c4b-4281-b951-d872f2087c98
* A ZygoteForkDelegate using nacl_helper executable to create container ↵bradchen@google.com2011-07-201-0/+10
| | | | | | | | | | | processes for NaCl modules. BUG=nativeclient:480 TEST=NaCl tests in Chrome Review URL: http://codereview.chromium.org/7442001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@93195 0039d316-1c4b-4281-b951-d872f2087c98
* Rename CommandLine::GetCommandLineString().msw@chromium.org2011-07-201-1/+1
| | | | | | | | | | | | Fix string hackery in net/tools/dump_cache/dump_cache.cc Fix const casts in chrome/installer/util/product.cc and base/process_util_win.cc. BUG=73195 TEST=none Review URL: http://codereview.chromium.org/7386002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@93165 0039d316-1c4b-4281-b951-d872f2087c98
* Modify the Chrome Linux zygote to support a ZygoteForkHelper for flexiblebradchen@google.com2011-07-181-2/+9
| | | | | | | | | | | | | fork implementations. BUG=nativeclient:480 TEST=existing zygote tests Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=92787 Review URL: http://codereview.chromium.org/7397003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@92858 0039d316-1c4b-4281-b951-d872f2087c98
* Introduce ui.dll / libui.so for the component build.darin@chromium.org2011-07-171-0/+6
| | | | | | | R=ben@chromium.org Review URL: http://codereview.chromium.org/7328011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@92819 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 92787 - Modify the Chrome Linux zygote to support a ZygoteForkHelper ↵rsleevi@chromium.org2011-07-161-9/+2
| | | | | | | | | | | | | | | | | | | | | for flexible fork implementations. BUG=nativeclient:480 TEST=existing zygote tests Review URL: http://codereview.chromium.org/7397003 TBR=bradchen@google.com Review URL: http://codereview.chromium.org/7400014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@92789 0039d316-1c4b-4281-b951-d872f2087c98
* Modify the Chrome Linux zygote to support a ZygoteForkHelper for flexiblebradchen@google.com2011-07-161-2/+9
| | | | | | | | | | | | | | | | fork implementations. BUG=nativeclient:480 TEST=existing zygote tests Review URL: http://codereview.chromium.org/7397003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@92787 0039d316-1c4b-4281-b951-d872f2087c98
* Mac: Split SystemMonitor initialization so it's not blocked by the Sandbox.jeremy@chromium.org2011-07-041-0/+5
| | | | | | | | | | | | | In OS X 10.7 Lion, the IO port we listen on to monitor system power events is blocked by the Sandbox. Move the allocation of the IO port so it happens early on during Chrome startup. BUG=83783 TEST=When putting a system to sleep with Chrome running, the browser shouldn't crash. Also, need to monitor crash logs to see that this crash goes away. Review URL: http://codereview.chromium.org/7235023 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@91462 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 90805 - I am submitting this with LGTMs from agl@ and evanm@. I'm ↵fischman@chromium.org2011-06-281-10/+2
| | | | | | | | | | | | | | | | | | | | | | | marking this as TBR=jam@ because he is on vacation. He previously LGTMed the reverted CL (link below) and there are not substantive changes since then. Modify the Chrome Linux zygote to support a nacl_helper executable, facilitating a special address-space layout as required by NaCl on ARM and ATOM CPUs. In passing, simplify some shared elements of launching NaCl modules in Chrome. This is an update to a previously reverted CL. Please see http://codereview.chromium.org/6995121 for the earlier reviews. Patching nacl_helper CL into fresh branch. BUG=nativeclient:480 TEST=nativeclient in-browser tests TBR=jam@chromium.org TBR=bradchen@google.com Review URL: http://codereview.chromium.org/7230057 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90813 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 90808 - Fixing type error for ZygoteMain.fischman@chromium.org2011-06-281-1/+1
| | | | | | | | | | | | | TBR=agl@chromium.org BUG= TEST= TBR= TBR=bradchen@google.com Review URL: http://codereview.chromium.org/7272031 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90812 0039d316-1c4b-4281-b951-d872f2087c98
* Fixing type error for ZygoteMain.bradchen@google.com2011-06-281-1/+1
| | | | | | | | | | TBR=agl@chromium.org BUG= TEST= TBR= git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90808 0039d316-1c4b-4281-b951-d872f2087c98