0
Files
src/third_party
simonb@chromium.org 22aa4f5f85 Speculative fix for occasional crazy linker crash.
crbug/397634 describes crashes that occur occasionally in the crazy linker
when loading the browser shared library.  These crashes have been observed
only in the M37 beta.

The current theory is that part of the address range that the crazy linker
must map with MAP_FIXED for shared RELRO to work may, on occasions,
already be mapped.  If it is mapped then the crazy linker's MAP_FIXED
to reserve space will overwrite it, with unpleasant results.  The crazy
linker tries to use a range of addresses that is 'safe' from use by the
system, but it may not be watertight.

This fix should work round the problem by removing the MAP_FIXED from
the mmap that reserves space, so that if any part of the range is already
occupied then the mmap returns a valid mapping, just not at the requested
address.  If that happens the fixed address load fails, and the
ChildProcessService retries with a non-fixed address.

This is mildly suboptimal since it loses the gain from shared RELRO, but
the library will still load and run.  Occurrences of this in the M37
beta suggest that it will be a relatively rare event.

So far the bug reported by the beta has not shown up in testing, but
something a little similar can be simulated by deliberately moving the
crazy linker's wanted address to around the heap.  With this perturbation
in place and without this fix, the browser crashes.  When this fix is
added the browser/renderer library loads and runs, and correctly reports
back-out and retry in logcat.

BUG=397634

Review URL: https://codereview.chromium.org/443393003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@288126 0039d316-1c4b-4281-b951-d872f2087c98
2014-08-07 19:55:36 +00:00
..
2014-06-20 21:40:01 +00:00
2014-06-06 00:08:32 +00:00
2014-07-10 22:00:37 +00:00
2014-07-22 00:54:34 +00:00
2014-06-05 19:34:40 +00:00
2014-06-17 21:11:54 +00:00
2014-06-17 20:33:53 +00:00
2014-06-17 20:33:53 +00:00
2014-08-04 18:24:33 +00:00
2014-06-20 18:13:59 +00:00
2014-05-19 08:11:31 +00:00
2014-08-06 07:27:59 +00:00
2014-07-02 17:37:34 +00:00
2014-07-17 21:53:09 +00:00
2014-07-24 22:22:55 +00:00
2014-07-22 18:20:37 +00:00
2014-07-08 21:12:50 +00:00
2014-05-03 04:32:19 +00:00

Name: Descriptive name of the package
Short Name: Name the package is distributed under (ex. libxml, openssl, etc)
URL: The URL where the package lives
Version: A searchable version number for the package (if the package does not version or is versioned by date or revision this field should be "0" and the revision, or date should be enumerated in the appropriate field)
Date: (OPTIONAL if version is supplied) The date that the package was updated
Revision: (OPTIONAL if version is supplied) The current revision of the package
License: The license under which the package is distributed. Standard forms are only accepted, eg MIT/X11/BSD/Apache 2.0/GPL/LGPL. See ANDROID_WHITELISTED_LICENSES in PRESUBMIT.py for allowed patterns.
License File: (OPTIONAL) File that contains a copy of the package's license. Use the special value NOT_SHIPPED to indicate that the package is not included in the shipped product, so its license does not need to be included in about:credits and no license file is required.
Security Critical: Either yes or no depending on whether this package is shipped in releases. For example openssl is critical where cygwin is not.
License Android Compatible: (OPTIONAL) Whether the package uses a license compatible with Android. Required only if the package is compatible and the 'License' field uses a non-standard value.

Description:
A short description of what the package is and is used for.

Local Modifications:
Enumerate any changes that have been made locally to the package from the shipping version listed above.