Commit Graph
127 Commits
Author SHA1 Message Date
Jed Davis cf9fb10a05 Bug 1858279 - Prelude: change Unix LaunchApp to take LaunchOptions by move. r=nika
The next patch will need the Linux version of LaunchApp to side-effect
the LaunchOptions in some cases; given that none of the callers ever
try to reuse a LaunchOptions, we might as well change it from a const
reference to an rvalue reference.  The Mac version is also changed,
because it uses the same declaration / function type.

Also, the overload of LaunchApp that takes a CommandLine has been
removed, because it was unused.

However, the Windows version is *not* changed; there's no need for it,
and it accepts different types of arguments anyway so it's not necessary
to match the Unix one.  Also, the CommandLine overload of the Windows
LaunchApp *is* used and continues to exist.

Differential Revision: https://phabricator.services.mozilla.com/D194455
2023-12-02 01:49:58 +00:00
Alexandre Lissy 6ab0d32c7e Bug 1819311 - Collect errors on process launch r=nika,geckoview-reviewers,owlish
Differential Revision: https://phabricator.services.mozilla.com/D171226
2023-04-13 08:35:24 +00:00
Andrew McCreight 291afe14f4 Bug 1792574, part 3 - Don't include nsMemory where it isn't needed. r=xpcom-reviewers,necko-reviewers,valentin,nika
There are only 3 places where nsMemory.h is still needed (image/RasterImage.cpp,
gfx/thebes/gfxFT2FontList.cpp, and nsMemory.cpp). Remove the rest.

Differential Revision: https://phabricator.services.mozilla.com/D158213
2022-09-28 15:17:46 +00:00
Bryce Seager van Dyk b3fe18312f Bug 1762839 - Fix Win specific thread annotations in nsProcessCommon. r=jesup,rkraesig
This adds in some locks that appear to be missing for the Windows case. It also
adds some locks which I think are missing for the non-Win case where `mProcess`
still exists in nsProcessCommon (though I'm less confident of that case).

Differential Revision: https://phabricator.services.mozilla.com/D142789
2022-04-10 21:58:26 +00:00
Randell Jesup 94a1148f93 Bug 1746495: xpcom/threads misc cleanup r=xpcom-reviewers,nika
Differential Revision: https://phabricator.services.mozilla.com/D134064
2022-02-22 13:00:54 +00:00
Andi-Bogdan Postelnicu 86033e3557 Bug 1519636 - Reformat recent changes to the Google coding style. r=firefox-build-system-reviewers,mhentges,sylvestre
Reformat with clang-format version 12.0.1 (taskcluster-FYV2l5wGTseBAhiqf8cxfQ)

Differential Revision: https://phabricator.services.mozilla.com/D131114
2021-11-16 08:07:29 +00:00
Bobby Holley 275a9e7659 Bug 1734262 - Suppress thread leak reports for the monitor thread. r=decoder
For the same reasons discussed in the previous commit, it's impractical
to join these threads on shutdown, and so we should suppress thread leak
reports for them.

Differential Revision: https://phabricator.services.mozilla.com/D128651
2021-10-16 16:29:32 +00:00
Bobby Holley ef8edfd0dc Bug 1734262 - Stop registering the async process monitor thread with the profiler. r=gerald
This thread waits on a syscall for the completion of an
asynchronously-spawned process. Since there's no general guarantee that
Gecko will outlive the proccesses it spawns, this thread can continue
running all the way up until the process terminates. And while we
generally endeavor to have teardown logic join any spawned threads, we
don't have an easy way to interrupt the platform-specific routines that
the thread might be waiting on.

That leaves us with instrumenting the profiler code to handle APIs
arbitrarily late during shutdown (i.e. after static destructors have
run), or simply not registering the thread with the profiler. The latter
is much simpler, and doesn't cost us much because these threads never do
any interesting computation, and thus aren't likely to be relevant to
the profiler. This registration was added in bug 1323100, which was just
a grep-driven activity which didn't identify any particular need for
profiling this thread.

Differential Revision: https://phabricator.services.mozilla.com/D128532
2021-10-16 16:29:31 +00:00
Simon Giesecke 46908cfb51 Bug 1660470 - Add missing include directives/forward declarations. r=nika
Differential Revision: https://phabricator.services.mozilla.com/D87865
2020-11-23 16:21:38 +00:00
Simon Giesecke 81bd203f46 Bug 1613985 - Use default for equivalent-to-default constructors/destructors in xpcom. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D62543
2020-02-12 11:13:33 +00:00
Eric Rahm 6b9537eb30 Bug 1241518 - Part 1: Remove unused nsAutoPtr.h includes in xpcom/ r=kmag
This removes various unused `#include "nsAutoPtr.h"` in `xpcom/`. Additionally
adds a few includes to the media stack.

Differential Revision: https://phabricator.services.mozilla.com/D58282
2020-01-07 00:06:01 +00:00
Toshihito Kikuchi a0c0d38214 Bug 1601905 - Add quotes for a path including whitespaces in ShellExecuteWithIFile. r=aklotz
A fix for Bug 1588975 replaced the call to `LaunchWithIProcess` in
`nsMIMEInfoWin::LaunchWithFile` with the call to `ShellExecuteWithIFile` to use
`mozilla::ShellExecuteByExplorer`.  This caused a regression that if a filepath
contains whitespaces, we pass it to a target application without quoting it
while the old codepath `ShellExecuteWithIFile` quoted a path accordingly in
`assembleCmdLine`.

A proposed fix is to quote a path in the same way as `assembleCmdLine` does.
This patch also moves `assembleCmdLine` to an exported header so that we can add
a unittest to cover both of `assembleCmdLine` and a new function
`assembleSingleArgument.  It would be better to refactor these functions in the
future because many lines are duplicated.

Differential Revision: https://phabricator.services.mozilla.com/D56646
2019-12-19 15:39:02 +00:00
Gabriele Svelto e5a868c4d5 Bug 1584969 - Use nsMaybeWeakPtr to simplify the nsIProcess implementation r=kmag
Differential Revision: https://phabricator.services.mozilla.com/D47601
2019-09-30 18:28:31 +00:00
Tom Ritter 89824e4b86 Bug 1575974 - Report any non-zero exit code as a process failure in nsIProcess r=gsvelto
EXIT_FAILURE is 'implementation defined' but can be defined to be 1.
In our case, pingsender exits with EXIT_FAILURE but nsIProcess wasn't
reporting it as failure because it thought failures were always negative.

Differential Revision: https://phabricator.services.mozilla.com/D45038
2019-09-11 04:40:11 +00:00
Razvan Maries 0550b6f6f1 Backed out 3 changesets (bug 1575974) for xpcshell perma fails on test_nsIProcess.js. CLOSED TREE
Backed out changeset e32925d2b886 (bug 1575974)
Backed out changeset a9512bb19ea7 (bug 1575974)
Backed out changeset 521655c73cd1 (bug 1575974)
2019-09-11 00:23:26 +03:00
Tom Ritter acf0c26d1c Bug 1575974 - Report any non-zero exit code as a process failure in nsIProcess r=gsvelto
EXIT_FAILURE is 'implementation defined' but can be defined to be 1.
In our case, pingsender exits with EXIT_FAILURE but nsIProcess wasn't
reporting it as failure because it thought failures were always negative.

Differential Revision: https://phabricator.services.mozilla.com/D45038
2019-09-10 18:01:29 +00:00
Dorel Luca 61ba501389 Backed out 3 changesets (bug 1575974) for MinGW build bustage. CLOSED TREE
Backed out changeset cc4a00226229 (bug 1575974)
Backed out changeset 225d858fe335 (bug 1575974)
Backed out changeset 1dc0b5a41dc8 (bug 1575974)
2019-09-10 18:39:44 +03:00
Tom Ritter 4f02536d71 Bug 1575974 - Report any non-zero exit code as a process failure in nsIProcess r=gsvelto
EXIT_FAILURE is 'implementation defined' but can be defined to be 1.
In our case, pingsender exits with EXIT_FAILURE but nsIProcess wasn't
reporting it as failure because it thought failures were always negative.

Differential Revision: https://phabricator.services.mozilla.com/D45038
2019-09-10 10:44:10 +00:00
Gabriele Svelto 15eb446ca9 Bug 1386760 - Remove the ExecutableName annotation r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D27885
2019-04-17 14:05:42 +00:00
Ryan Hunt e1344a48bb Bug 1523969 part 27 - Move method definition inline comments to new line in 'xpcom/'. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D21131
2019-02-25 16:14:01 -06:00
Ehsan Akhgari 498e2df734 Bug 1521000 - Part 2: Adjust our clang-format rules to include spaces after the hash for nested preprocessor directives r=sylvestre
# ignore-this-changeset
2019-01-18 10:16:18 +01:00
Gabriele Svelto 666d5530a5 Bug 1386760 - Add a crash annotation containing the last executable we launched r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D12643
2019-01-02 14:54:58 +00:00
Sylvestre Ledru e5a134f73a Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
# ignore-this-changeset
2018-11-30 11:46:48 +01:00
Nicholas Nethercote cd127441a0 Bug 1486690 - Remove unnecessary checks after moz_xmalloc() calls. r=glandium
There are surprisingly many of them.

(Plus a couple of unnecessary checks after `new` calls that were nearby.)
2018-08-28 15:56:01 +10:00
Gabriele Svelto cdb98a1cf2 Bug 1464229 - Remove obsolete CPU-selection attributes when creating a new process on MacOS X; r=froydnj
MozReview-Commit-ID: DvqC9Vl8i6n
2018-05-24 14:24:53 +02:00
Jed Davis 878739a808 Bug 1401786 - Move base::LaunchApp options into a LaunchOptions struct, like upstream Chromium. r=billm
MozReview-Commit-ID: 74IXV4oGeWR
2017-09-08 20:35:06 -06:00
Jed Davis 3eec9dd26a Bug 1406971 - Change nsProcess to use LaunchApp from IPC, instead of NSPR, on Unix. r=froydnj
This also fixes the Unix part of bug 678369, and fixes bug 147659 as a
convenient side-effect of using LaunchApp (which has the desired
fd-closing behavior already) rather than directly using fork/exec.

The main goal is to work around bug 227246, where PR_CreateProcess on
Unix interferes with anything else that tries to use child processes.
This does not fix that bug -- NSPR will still cause problems if used in
that way -- but it's an adequate workaround for that bug in Gecko in
almost all cases (the one known exception is nsAuthSambaNTLM, which uses
NSPR directly and needs to be fixed separately).

Waiting for the child process uses waitpid() directly, sharing the
existing code used for OS X.

MozReview-Commit-ID: 6zfZ1Zgk2i9
2017-10-06 19:58:33 -06:00
Nicholas Nethercote a35e82f193 Bug 1403868 (part 4) - Reduce tools/profiler/public/*.h to almost nothing in non-MOZ_GECKO_PROFILER builds. r=mstange.
Currently the Gecko Profiler defines a moderate amount of stuff when
MOZ_GECKO_PROFILER is undefined. It also #includes various headers, including
JS ones. This is making it difficult to separate Gecko's media stack for
inclusion in Servo.

This patch greatly simplifies how things are exposed. The starting point is:

- GeckoProfiler.h can be #included unconditionally;

- everything else from the profiler must be guarded by MOZ_GECKO_PROFILER.

In practice this introduces way too many #ifdefs, so the patch loosens it by
adding no-op macros for a number of the most common operations.

The net result is that #ifdefs and macros are used a bit more, but almost
nothing is exposed in non-MOZ_GECKO_PROFILER builds (including
ProfilerMarkerPayload.h and GeckoProfiler.h), and understanding what is exposed
is much simpler than before.

Note also that in BHR, ThreadStackHelper is now entirely absent in
non-MOZ_GECKO_PROFILER builds.
2017-10-04 09:11:18 +11:00
Cervantes Yu 27ff10717a Bug 1400294 - Add 'noShell' attribute to nsIProcess to use CreateProcess() for launching a process that doesn't require shell service on Windows. r=froydnj,r=aklotz,r=dmajor
This adds an attribute 'noShell' to nsIProcess that is used to launch a process
using CreateProcess() if we are sure we are launching an executable and don't
require the extra work of the Windows shell service.

MozReview-Commit-ID: 7p0iHCZK1uX
2017-10-03 11:29:14 +08:00
David Major 7b767a458e Bug 1376638 followup: update comment to reflect code changes. DONTBUILD 2017-09-29 12:25:10 -04:00
Nicholas Nethercote fcd4f4fa21 Bug 1376638 - Minimize uses of prmem.h. r=glandium.
It's silly to use prmem.h within Firefox code given that in our configuration
its functions are just wrappers for malloc() et al. (Indeed, in some places we
mix PR_Malloc() with free(), or malloc() with PR_Free().)

This patch removes all uses, except for the places where we need to use
PR_Free() to free something allocated by another NSPR function; in those cases
I've added a comment explaining which function did the allocation.
2017-06-30 19:05:41 -07:00
Bill McCloskey ce42826bdf Bug 1372405 - Provide names for all runnables in the tree (r=froydnj)
MozReview-Commit-ID: DKR6ROiHRS7
2017-06-26 14:19:58 -07:00
Carsten "Tomcat" Book 238bf154d5 Backed out changeset 4f6302a98ae4 (bug 1372405) 2017-06-21 13:59:26 +02:00
Bill McCloskey 67e8af4720 Bug 1372405 - Provide names for all runnables in the tree (r=froydnj)
MozReview-Commit-ID: DKR6ROiHRS7
2017-06-20 21:44:11 -07:00
Carsten "Tomcat" Book bbe9441993 Backed out changeset 9846de3bd954 (bug 1372405) 2017-06-20 08:27:02 +02:00
Bill McCloskey f69608368b Bug 1372405 - Provide names for all runnables in the tree (r=froydnj)
MozReview-Commit-ID: DKR6ROiHRS7
2017-06-19 22:25:47 -07:00
Gabriele Svelto 1094b05ed8 Bug 1366711 - Make it possible to hide applications launched with nsIProcess; r=bsmedberg
MozReview-Commit-ID: K3vadzPg8SR
2017-05-22 10:23:00 +02:00
Cervantes Yu 6bcb4f30a4 Bug 1024669 - Part 1: Annotate crash reports with thread names. r=gsvelto
NS_SetCurrentThreadName() is added as an alternative to PR_SetCurrentThreadName()
inside libxul. The thread names are collected in the form of crash annotation to
be processed on socorro.

MozReview-Commit-ID: 4RpAWzTuvPs
2017-02-07 18:57:23 +08:00
Sebastian Hengst 189424cb45 Backed out changeset 7fdcabdbb675 (bug 1024669) for failing mda, GTest and talos jobs. r=backout on a CLOSED TREE 2017-04-10 19:05:44 +02:00
Cervantes Yu c2014c712d Bug 1024669 - Part 1: Annotate crash reports with thread names. r=gsvelto
MozReview-Commit-ID: 4RpAWzTuvPs
2017-02-07 18:57:23 +08:00
Carsten "Tomcat" Book e6d6caf1f8 Backed out changeset 7a52d887bcea (bug 1024669) for bustage 2017-04-10 11:43:49 +02:00
Cervantes Yu eb13868db5 Bug 1024669 - Part 1: Annotate crash reports with thread names. r=gsvelto
MozReview-Commit-ID: 4RpAWzTuvPs
2017-02-07 18:57:23 +08:00
Markus Stange 991ab574ae Bug 1323100 - Register most of the remaining threadfunc threads with the profiler. r=froydnj
As far as I can tell, this covers all the remaining threads which we start
using PR_CreateThread, except the ones that are created inside NSPR or NSS,
and except for the Shutdown Watchdog thread in nsTerminator.cpp and the
CacheIO thread. The Shutdown Watchdog thread stays alive past leak detection
during shutdown (by design), so we'd report leaks if we profiled it. The
CacheIO thread seems to stay alive past shutdown leak detection sometimes as
well.

This adds a AutoProfilerRegister stack class for easy registering and
unregistering. There are a few places where we still call
profiler_register_thread() and profiler_unregister_thread() manually, either
because registration happens conditionally, or because there is a variable that
gets put on the stack before the AutoProfilerRegister (e.g. a dynamically
generated thread name). AutoProfilerRegister needs to be the first object on
the stack because it uses its own `this` pointer as the stack top address.

MozReview-Commit-ID: 3vwhS55Yzt
2017-01-05 16:34:26 +01:00
Gian-Carlo Pascutto 7123fa2221 Bug 1310116 - Allow waitpid but warn on creating processes in content. r=jld
MozReview-Commit-ID: JjNfA6wUe3T
2016-10-25 20:43:42 +02:00
Kyle Huey b972c94d0f Bug 1268313: Part 7 - Move NS_NewRunnableMethod and friends to mozilla::NewRunnableMethod. r=froydnj 2016-05-05 01:45:00 -07:00
Carsten "Tomcat" Book aadd508ffe Backed out changeset 85ce8cb0639a (bug 1268313) 2016-04-29 14:21:16 +02:00
Kyle Huey e62a0823c9 Bug 1268313: Part 7 - Move NS_NewRunnableMethod and friends to mozilla::NewRunnableMethod. r=froydnj 2016-04-28 14:08:25 -07:00
Nathan Froyd 4e6d8f6705 Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat
The bulk of this commit was generated with a script, executed at the top
level of a typical source code checkout.  The only non-machine-generated
part was modifying MFBT's moz.build to reflect the new naming.

CLOSED TREE makes big refactorings like this a piece of cake.

 # The main substitution.
find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \
    xargs perl -p -i -e '
 s/nsRefPtr\.h/RefPtr\.h/g; # handle includes
 s/nsRefPtr ?</RefPtr</g;   # handle declarations and variables
'

 # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h.
perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h

 # Handle nsRefPtr.h itself, a couple places that define constructors
 # from nsRefPtr, and code generators specially.  We do this here, rather
 # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename
 # things like nsRefPtrHashtable.
perl -p -i -e 's/nsRefPtr/RefPtr/g' \
     mfbt/nsRefPtr.h \
     xpcom/glue/nsCOMPtr.h \
     xpcom/base/OwningNonNull.h \
     ipc/ipdl/ipdl/lower.py \
     ipc/ipdl/ipdl/builtin.py \
     dom/bindings/Codegen.py \
     python/lldbutils/lldbutils/utils.py

 # In our indiscriminate substitution above, we renamed
 # nsRefPtrGetterAddRefs, the class behind getter_AddRefs.  Fix that up.
find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \
    xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g'

if [ -d .git ]; then
    git mv mfbt/nsRefPtr.h mfbt/RefPtr.h
else
    hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h
fi
2015-10-18 01:24:48 -04:00
Mike Hommey 4d93988786 Bug 1134923 - Remove NS_Alloc/NS_Realloc/NS_Free. r=nfroyd
They are kept around for the sake of the standalone glue, which is used
for e.g. webapprt, which doesn't have direct access to jemalloc, and thus
still needs a wrapper to go through the xpcom function list and get to
jemalloc from there.
2015-05-01 09:40:30 +09:00
Bill McCloskey d5f4b3a7b8 Bug 1122303 - nsIProcess::Run needs to handle EINTR on Mac (r=nfroyd) 2015-01-16 09:57:33 -08:00