Commit Graph

965 Commits

Author SHA1 Message Date
Jim Chen
9d10605784 Bug 1460989 - Hold system linker lock while modifying debug map. r=glandium, a=RyanVM
When we modify the debug map, we could be racing with the system linker,
either when we modify the entries or when we change page protection
flags. To fix the race, we need to take the system linker's internal
lock when we perform any kind of modification on the debug map.

One way to hold the system linker lock is to call dl_iterate_phdr, and
perform our actions inside the callback, which is invoked with the
lock being held. However, dl_iterate_phdr is only present on Android
5.0+, and even then, dl_iterate_phdr is only protected by the linker
lock on Android 6.0+.

This means that with this patch, we can only safely modify the debug map
on Android 6.0+, which I think is acceptable for an operation that only
benefits a debugger.

MozReview-Commit-ID: BowBEO8tu8Z

--HG--
extra : amend_source : 837631dfc2ef17b24ffe5778bcb70dc29b7dfc66
2018-06-15 04:24:10 -04:00
Carl Corcoran
432149de7d Bug 1467731: Prevent WinVerifyTrust from hitting the network; r=aklotz
MozReview-Commit-ID: DSpHXsJkeoX

--HG--
extra : rebase_source : 2352f566ca9819d7e49c98889d021df9aa430d7b
extra : source : 269aeb1d215775a2117494e02185eb08f27c54e3
2018-06-08 12:45:09 +02:00
Ciure Andrei
83c5f0bd74 Merge mozilla-central to mozilla-inbound. a=merge CLOSED TREE
--HG--
rename : browser/app/LaunchUnelevated.cpp => browser/app/winlauncher/LaunchUnelevated.cpp
rename : browser/app/LaunchUnelevated.h => browser/app/winlauncher/LaunchUnelevated.h
rename : browser/app/LauncherProcessWin.cpp => browser/app/winlauncher/LauncherProcessWin.cpp
rename : browser/app/LauncherProcessWin.h => browser/app/winlauncher/LauncherProcessWin.h
rename : browser/app/ProcThreadAttributes.h => browser/app/winlauncher/ProcThreadAttributes.h
2018-06-08 00:56:15 +03:00
Aaron Klotz
d057aef830 Bug 1445025: Part 2 - Move blocklist definitions into separate header file and add new initialization flag; r=mhowell
* This allows us to use a single blocklist definition in multiple places.
* This patch also adds support for a new initialization flag that, when enabled,
  disables the DLL Blocking part of the mozglue blocklist but leaves the
  profiling and stackwalking suppression bits intact.
2018-06-05 15:16:13 -06:00
Cosmin Sabou
1cda6f4992 Backed out 6 changesets (bug 1445025) for browser chrome failures on browser_checkdllblockliststate.js. CLOSED TREE
Backed out changeset a1203eb4cee9 (bug 1445025)
Backed out changeset 64b003dceafb (bug 1445025)
Backed out changeset a6cff2b478da (bug 1445025)
Backed out changeset 4dbc7fbb3361 (bug 1445025)
Backed out changeset 1ad82650ca1c (bug 1445025)
Backed out changeset 5c63001e1ce6 (bug 1445025)

--HG--
rename : browser/app/winlauncher/LaunchUnelevated.cpp => browser/app/LaunchUnelevated.cpp
rename : browser/app/winlauncher/LaunchUnelevated.h => browser/app/LaunchUnelevated.h
rename : browser/app/winlauncher/LauncherProcessWin.cpp => browser/app/LauncherProcessWin.cpp
rename : browser/app/winlauncher/LauncherProcessWin.h => browser/app/LauncherProcessWin.h
rename : browser/app/winlauncher/ProcThreadAttributes.h => browser/app/ProcThreadAttributes.h
2018-06-07 12:09:22 +03:00
Aaron Klotz
05eb3b3d8a Bug 1445025: Part 2 - Move blocklist definitions into separate header file and add new initialization flag; r=mhowell
* This allows us to use a single blocklist definition in multiple places.
* This patch also adds support for a new initialization flag that, when enabled,
  disables the DLL Blocking part of the mozglue blocklist but leaves the
  profiling and stackwalking suppression bits intact.

--HG--
extra : rebase_source : ff4dad72f57c5662fc9e1bbd9e4efb3ff01470ef
2018-06-05 15:16:13 -06:00
Ryan VanderMeulen
4aef6ab351 Backed out changeset a4465713555b (bug 1460989) for causing the Galaxy S8 crash rate to spike. 2018-06-06 21:07:48 -04:00
Xidorn Quan
75cc8c371b Bug 1452204 part 2 - Use RtlCaptureContext to capture context for current thread and remove walker thread. r=glandium
GetThreadContext() returns a context pointing to its own frame when it
gets called with the current thread handle. That frame can go away after
it returns. This patch instead uses RtlCaptureContext(), which captures
the context of its caller, when walking the current thread.

In the past, we also used a walker thread when nullptr is passed in for
aThread, but the check doesn't cover all the cases, and having another
thread is apparently more complicated than this approach.

MozReview-Commit-ID: 3TAatDc9BLh

--HG--
extra : rebase_source : 7978cce48b8939a723cd5ccafe86d3f7aca6d3ac
2018-06-04 19:23:27 +10:00
Xidorn Quan
5ce8f98cba Bug 1452204 part 1 - Correctly set walkCallingThread. r=glandium
GetCurrentThread() returns a pseudo handle, so comparing it against
the passed in argument doesn't make sense in most cases. This patch
changes it to using the thread id for comparison, which is guaranteed
to be unique in the whole lifetime of a thread.

MozReview-Commit-ID: 5TNAgLkcS6m

--HG--
extra : rebase_source : d5bb21ac57a4c1149b8d332ea7b28a78ed994c62
2018-06-04 19:17:32 +10:00
Sylvestre Ledru
89e4661534 Bug 1464869 - Fix flake8/pep8 issue by hand in mozglue/ r=glandium
MozReview-Commit-ID: 4U31tUZPm8U

--HG--
extra : rebase_source : 5b9fdb66a482e89e3d70fd5e8fd9a86c055f7044
2018-05-25 21:28:12 -07:00
Margareta Eliza Balazs
44905b7be9 Backed out 2 changesets (bug 1452204) for perma failing in memory/replace/dmd/test/test_dmd.js
Backed out changeset 4431cecd4c2d (bug 1452204)
Backed out changeset 72fc40daf6cd (bug 1452204)
2018-06-05 11:01:54 +03:00
Xidorn Quan
718caa9bc0 Bug 1452204 part 2 - Use RtlCaptureContext to capture context for current thread. r=glandium
GetThreadContext() returns a context pointing to its own frame when it
gets called with the current thread handle. That frame can go away after
it returns. This patch instead uses RtlCaptureContext(), which captures
the context of its caller, when walking the current thread.

MozReview-Commit-ID: 3TAatDc9BLh

--HG--
extra : rebase_source : d5d88f0a9fa07da5b31f27c51c78ee2bfb527a8e
2018-06-04 19:23:27 +10:00
Xidorn Quan
7025ae7cbc Bug 1452204 part 1 - Correctly set walkCallingThread. r=glandium
GetCurrentThread() returns a pseudo handle, so comparing it against
the passed in argument doesn't make sense in most cases. This patch
changes it to using the thread id for comparison, which is guaranteed
to be unique in the whole lifetime of a thread.

MozReview-Commit-ID: 5TNAgLkcS6m

--HG--
extra : rebase_source : 0e72e8f6196c8079086ca697b9a121c6987ef43e
2018-06-04 19:17:32 +10:00
Emilio Cobos Álvarez
1e9c395548 Bug 1466168: Remove mozilla::Forward in favor of std::forward. r=froydnj
Same approach as the other bug, mostly replacing automatically by removing
'using mozilla::Forward;' and then:

  s/mozilla::Forward/std::forward/
  s/Forward</std::forward</

The only file that required manual fixup was TestTreeTraversal.cpp, which had
a class called TestNodeForward with template parameters :)

MozReview-Commit-ID: A88qFG5AccP
2018-06-02 09:33:26 +02:00
Aaron Klotz
2884d63e52 Bug 1463596: Ensure that WritableTargetFunction correctly handles changing of protection attributes across regions that straddle page boundaries and have different initial protection attributes; r=handyman 2018-05-23 16:50:49 -06:00
Emilio Cobos Álvarez
fffb25b74f Bug 1465585: Switch from mozilla::Move to std::move. r=froydnj
This was done automatically replacing:

  s/mozilla::Move/std::move/
  s/ Move(/ std::move(/
  s/(Move(/(std::move(/

Removing the 'using mozilla::Move;' lines.

And then with a few manual fixups, see the bug for the split series..

MozReview-Commit-ID: Jxze3adipUh
2018-06-01 10:45:27 +02:00
Aaron Klotz
0300dd1f10 Bug 1463961: DLL Interceptor - Make shared VM policy only work for in-proc interceptors and remove pid mapping; r=handyman
--HG--
extra : rebase_source : a85b283a380e0f30935868c10e3a9d626a8a0061
2018-05-28 16:54:58 -06:00
Jim Chen
32c922179c Bug 1460989 - Check page protection flags again after mprotect(); r=glandium
We are apparently still crashing even after mprotect() with write flag
returns successfully. This patch reads the flags again after mprotect()
returns, and hopefully the flags will tell the truth of whether the page
is truly writable or not after calling mprotect().

MozReview-Commit-ID: Jsg8vHKFEvJ

--HG--
extra : rebase_source : b028aa0d5cefd50302bfc2502292d9129d202e09
2018-05-30 11:47:07 -04:00
Masatoshi Kimura
05cc187118 Bug 1462727 - Make WindowsMapRemoteView.cpp work with April 2018 Update SDK. r=aklotz
MozReview-Commit-ID: DtzFeCmbGqO

--HG--
extra : rebase_source : 242862f31d3a2f6b0eb7ae53392f7c4ed3296d20
2018-05-19 02:12:14 +09:00
Tom Ritter
4e3daa47c1 Bug 1460720 Do not define _aligned_malloc - instead define _aligned_malloc_impl and export _aligned_malloc r=glandium
MozReview-Commit-ID: 3EwAd81Iz7r

--HG--
extra : rebase_source : 899303e4c5db39b24451692f59a9d3bd1f9fd5a2
2018-05-15 11:10:48 -05:00
Margareta Eliza Balazs
d4b9e50875 Merge inbound to mozilla-central. a=merge 2018-05-16 13:00:51 +03:00
Markus Stange
68470bc3c0 Bug 1461555 - Rename PseudoStack to ProfilingStack. r=njn
This also changes many references to the 'pseudo stack' to refer to the 'label
stack' instead. The label stack is one of the two stacks that are managed by
the profiling stack, the other stack being the JS interpreter stack.

MozReview-Commit-ID: Ed0YMMeCBY8

--HG--
extra : rebase_source : 5675d670f424c7d7dda04bafc2b3431fa2485e3c
2018-05-15 01:03:11 -04:00
Markus Stange
633ac66e7f Bug 1461555 - Rename ProfileEntry to ProfilingStackFrame. r=njn
The term "entry" is already used for elements in the profile buffer.

MozReview-Commit-ID: 1aB22V6veQh

--HG--
extra : rebase_source : c664eb4d6bed6cb74ba8a1b67ea99bd8ca57bcf7
extra : source : 3264c0cc0027b240b55bd3aebf27263b1e1d1cc0
2018-05-15 01:14:03 -04:00
Markus Stange
73800e02dd Bug 1461053 - Treat SP marker frames as their own kind, instead of lumping them together with label frames. r=njn
MozReview-Commit-ID: 5nQEIgBY4SP

--HG--
extra : rebase_source : 9b59e41fdf62e86941104248d9c0cf08b73736f2
2018-05-14 23:30:32 -04:00
Markus Stange
818ad4ea69 Bug 1461053 - Rename Cpp frames to label frames in the ProfilingStack. r=njn
The name Cpp was confusing, because C++ functions are in the native stack, not
in the pseudo stack. The pseudo stack only contains frames for manually
instrumented code that uses AutoProfilerLabel, and JS frames.

MozReview-Commit-ID: 9ptfhREo0qy

--HG--
extra : rebase_source : 76a1a32acb4c946aeb2ad45e904e419c1c9e2ad1
2018-05-14 23:21:29 -04:00
Margareta Eliza Balazs
4f9a2ba08e Merge inbound to mozilla-central. a=merge 2018-05-11 12:36:02 +03:00
Eric Rahm
c6d32ead9e Bug 1364624 - Part 2: Switch from CRITICALSECTION to SRWLOCK. r=froydnj
--HG--
extra : rebase_source : ff510d6c1959823b2a2a5ac25ae80b6067fd70dc
2018-04-27 16:48:47 -07:00
Mike Hommey
b94cf61acd Bug 1459722 - Remove zxx_stream. r=froydnj
It was necessary back when we were doing decompression from a signal
handler, because we couldn't then have zlib call malloc, but we don't
do that anymore, so the whole wrapping is effectively unused.

With the wrapping gone, we manually initialize the zalloc, zfree and
opaque fields, as specified in the zlib documentation.

--HG--
extra : rebase_source : c4e84009e65f71f6c43362468c2934e04a8abda1
2018-05-10 11:45:23 +09:00
David Major
976282cb1f Bug 1460407: Fix printf format warning in TestDllInterceptorCrossProcess.cpp. r=aklotz 2018-05-09 16:16:20 -04:00
Aaron Klotz
a1373c8d5a Bug 1451524: Switch the default interceptor VM policy over from unique to shared; r=handyman 2018-04-25 15:25:16 -06:00
Jon Coppeard
b8b2fad2eb Bug 1457882 - Emulate glibc adaptive mutexes on OSX r=nfroyd 2018-05-02 15:11:53 +01:00
Aaron Klotz
0850bc3ec5 Bug 1451511: Add cross-process function hooking to DLL interceptor; r=handyman
--HG--
rename : ipc/mscom/DynamicallyLinkedFunctionPtr.h => mozglue/misc/DynamicallyLinkedFunctionPtr.h
extra : amend_source : 1eea43cda6e05f722f0b1373535d9ceabac18661
2018-04-04 16:31:43 -06:00
Aaron Klotz
b59f7ece0f Bug 1451524: Make interceptor shared VM policy compatible with changes from bug 1456054; r=handyman
--HG--
extra : rebase_source : 14d4eaedec28708978bac42495f3a1eed180ac48
2018-04-26 11:12:55 -06:00
Hiroyuki Ikezoe
30abf8cc5d Bug 1456672 - Add a brief note that we prefer to pass TimeStamp objects by value. r=heycam,kats DONTBUILD
MozReview-Commit-ID: 6EvYJvBv5DF

--HG--
extra : rebase_source : 054ca1491ebbdc4788f90bf9fc60da75130b9af8
2018-04-26 14:53:23 +09:00
arthur.iakab
b952733074 Merge mozilla-central to inbound on a CLOSED TREE
--HG--
extra : amend_source : 211f8c266bd77e1617feb70153708664d3edf337
2018-04-26 02:08:49 +03:00
Dorel Luca
7652908dea Backed out changeset 3802f86e1bd1 (bug 1364624) for shutdown hangs on reftests. a=backout 2018-04-26 00:27:45 +03:00
Aaron Klotz
ea4048c1e7 Bug 1456054: Verify that a redirected address is accessible and backed by an image; r=handyman 2018-04-23 15:07:54 -06:00
Aaron Klotz
ff279da3a5 Bug 1451524: Add a VM policy to the DLL interceptor that allows multiple instances to share a single trampoline space; r=handyman 2018-04-02 17:04:17 -06:00
Eric Rahm
b626618f7d Bug 1364624 - Switch from CRITICALSECTION to SRWLOCK. r=froydnj
--HG--
extra : rebase_source : 4acc959bb8ccc33f6d549b71bbd83b8f8d09b353
2018-04-23 10:45:20 -07:00
James Willcox
624417af1d Bug 1455662 - Guard against mprotect() failure when manipulating link map r=jchen
MozReview-Commit-ID: 7orhBmf4j5j
2018-04-25 15:06:55 -05:00
Aaron Klotz
5317435ec0 Bug 1432653: Refactor the DLL interceptor and parameterize its memory operations; r=handyman
MozReview-Commit-ID: EYxVsQ1kicy

--HG--
rename : xpcom/build/nsWindowsDllInterceptor.h => mozglue/misc/interceptor/PatcherBase.h
rename : xpcom/build/nsWindowsDllInterceptor.h => mozglue/misc/interceptor/PatcherDetour.h
rename : xpcom/build/nsWindowsDllInterceptor.h => mozglue/misc/interceptor/PatcherNopSpace.h
rename : xpcom/build/nsWindowsDllInterceptor.h => mozglue/misc/nsWindowsDllInterceptor.h
rename : toolkit/xre/test/win/TestDllInterceptor.cpp => mozglue/tests/interceptor/TestDllInterceptor.cpp
extra : amend_source : 84a7590b40a649f7321eb05feca4f9256ecc5d22
2018-04-09 13:37:52 -06:00
James Willcox
cf502cd7d7 Bug 1450793 - Don't assume 4k page size r=glandium
MozReview-Commit-ID: DWSIUOFfKW5
2018-04-13 08:46:35 -05:00
Nika Layzell
0d56c8977a Bug 1437167 - Part 2: Round submillisecond condition variable waits up to 1ms, r=froydnj 2018-04-10 17:49:47 -04:00
Nika Layzell
0c3ba13e4c Bug 1437167 - Part 1: Stop using PRIntervalTime as the argument to CondVar::Wait and Monitor::Wait, r=mstange, r=froydnj 2018-04-10 17:49:47 -04:00
Andrea Marchesini
0d9f03eaef Bug 1450959 - TimeStamp class doesn't need to be friend of StartupTimelineRecordExternal, r=glandium 2018-04-05 06:44:31 +02:00
Marco Castelluccio
f2aadf350c Bug 1433408 - Blocklist Dell Backup and Recovery tool DLLs as they cause crashes. r=aklotz
--HG--
extra : rebase_source : 85809f1757f257be0e0bf8848b0cc104e0543eb6
2018-02-15 23:13:29 +01:00
Noemi Erli
112dc4a070 Backed out changeset e72d2ab40d64 (bug 1450959) for failing in builds/worker/workspace/build/src/obj-firefox/dist/include/js/UbiNode.h on a CLOSED TREE 2018-04-05 11:55:19 +03:00
Andrea Marchesini
933fa97728 Bug 1450959 - TimeStamp class doesn't need to be friend of StartupTimelineRecordExternal, r=glandium 2018-04-05 06:44:31 +02:00
James Willcox
0e79fd0b72 Bug 1447607 - Correctly init and update ElfLoader::Singleton::lastError r=glandium
MozReview-Commit-ID: r1bclXdt4V

--HG--
extra : rebase_source : c9f612def794a6edc5fa8dd99fc08d2df4ed1cf1
2018-03-30 09:57:43 -05:00
Nathan Froyd
5be768776b Bug 1448032 - use SprintfLiteral in some android glue code; r=glandium
SprintfLiteral is much nicer, and placates the clang plugin as well.
2018-03-27 10:51:31 -04:00