Ryan Macnak
877284947b
Rename TARGET_OS_* to HOST_OS_*.
...
Like HOST_ARCH_*, HOST_OS_* describes the OS the VM is running on, which may be different from the OS the VM is generating code for during AOT compilation.
Currently we conflate the two when emitting AOT as assembly, and we get away with it because Flutter only uses assembly for targeting iOS and one can only target iOS from a Mac, but we expect to use assembly for Android as well so native tools can unwind Dart frames.
R=zra@google.com
Review-Url: https://codereview.chromium.org/2750843003 .
2017-03-15 13:11:05 -07:00
Martin Kustermann
5dc73cacd2
VM: Avoid running atexit() handlers during exit() of a failed subprocess spawn
...
Somtimes execve() fails and then we fall back to exit(1) in the fork()ed but not
exeve()ed subprocess.
One of the issues is e.g. that we don't want to run LSAN in the fork()ed but not
execve()ed subprocess, the results will be bogus (plus the output of
LSAN is not read on the other side (i.e. the unix pipe is not drained) which
blocks the subprocess indefinitely).
R=vegorov@google.com
Review-Url: https://codereview.chromium.org/2632483002 .
2017-01-12 14:20:34 +01:00
Martin Kustermann
e0a427a957
Workaround attempt for timeout flakiness: Avoid running atexit() handlers in fork()ed process on linux
...
About this CL:
The only purpose of `if (fork() == 0) exit(0)` is to wake up
a thread in the parent process which might be blocked on `wait()`.
There is no need to run atexit() handlers in the `fork()`ed child.
This is a *workaround attempt* for a deadlocked `free()` call inside the
processing of atexit handlers in glibc.
(Side note: There might be better ways of notifying the thread, like sending a
signal to the particular pthread with `pthread_kill` which would make the
`wait()` syscall be interrupted.)
About the issue:
It is still unclear why, in this particular case, the tcmalloc locks should
be hold during the `exit()` call:
* via a static initializer tcmalloc uses
`pthread_atfork(before=ObtainAllLocks(),
after_parent=ReleaseAllLocks(),
after_child=ReleaseAllLocks())`
to register locking & unlocking around `fork()`
* glibc's `fork()` runs the either `after_parent` or `after_child` handlers
(unconditionally) which should free the locks
* the `exit()` call later should be free to malloc/free
The [BUG] describes more in detail how we can hit a tcmalloc deadlock in a
different situation (it's a linux kernel bug).
Namely, if the linux kernel runs OOM during `fork()` and therefore fails to
set the new thread-id. The glibc code hits an assert and tries to allocate
memory before `after_parent`/`after_child` handlers were executed which
deadlocks.
BUG=https://github.com/dart-lang/sdk/issues/28246
R=vegorov@google.com
Review-Url: https://codereview.chromium.org/2618723002 .
2017-01-05 13:56:01 +01:00
Zach Anderson
2b48261764
Fix Process.runSync error handling.
...
Now, failing to allocate a buffer for stderr or stdout will generate
an ENOMEM OSError exception.
Also previously, read() returning an error would cause buffers for
stderr and stdout to leak. After this change, they'll be reclaimed.
R=asiva@google.com
Review-Url: https://codereview.chromium.org/2596543002 .
2016-12-21 09:10:40 -08:00
Zachary Anderson
479a97b129
clang-format runtime/bin
...
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org/2480793002 .
2016-11-04 12:30:56 -07:00
Ryan Macnak
4d65db8a95
Don't use IsolateData for the exit hook as multiple embedders share the dart/bin while using different isolate data structures.
...
Issue flutter/flutter#6506
R=asiva@google.com
Review URL: https://codereview.chromium.org/2463923002 .
2016-10-31 15:56:25 -07:00
Zachary Anderson
7308e58c3f
Really remove io support when dart:io is unsupported.
...
Previously we would compile in implementaitions of native calls for
IO functions that would never be used. This CL provides implementations
that throw a Dart exception if they're called by mistake. It also uses
a DART_IO_DISABLED preprocessor define to clean up the build files and
check that we're not including code we shouldn't.
R=iposva@google.com , johnmccutchan@google.com
Review URL: https://codereview.chromium.org/1839463002 .
2016-03-29 11:22:03 -07:00
Zachary Anderson
45661a7091
Cleanup in //runtime/bin
...
R=iposva@google.com
Review URL: https://codereview.chromium.org/1800863002 .
2016-03-16 10:01:00 -07:00
Zachary Anderson
c75a817ee0
Fixes some memory leaks in //runtime/bin
...
Also some style cleanups.
Decided to fix these leaks by using Dart_ScopeAllocate
instead of malloc and new. Leaks are noted in the CL.
I haven't finished looking over all the code in
//runtime/bin yet, but this CL was getting big.
Review URL: https://codereview.chromium.org/1781883002 .
2016-03-14 11:08:52 -07:00
John McCutchan
aaf37ad035
Landing patch set 7 from https://codereview.chromium.org/1450113003/
...
Review URL: https://codereview.chromium.org/1466523002 .
2015-11-19 14:18:52 -08:00
John McCutchan
28e416b1f4
Revert "Avoid strerror_r portability issues"
...
This reverts commit ca81c1732b .
2015-11-17 16:34:25 -08:00
John McCutchan
ca81c1732b
Avoid strerror_r portability issues
...
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org/1450113003 .
2015-11-17 15:23:47 -08:00
Anders Johnsen
9a01a22e96
Revert "Clean up process spawning."
...
This reverts commits
- bbdc57ebf6
- bd25e641f2
- 5cc8fca131
- ed72caa3cd
BUG=
Review URL: https://codereview.chromium.org//1182423003 .
2015-06-15 15:26:56 +02:00
Anders Johnsen
bbdc57ebf6
Clean up process spawning.
...
Pass environment as argument to execvpe and use _exit instead of exit
(so fork/vfork can be used interchangeable).
BUG=
R=sgjesse@google.com
Review URL: https://codereview.chromium.org//1156313004 .
2015-06-10 10:42:54 +02:00
ajohnsen@google.com
ab6f8cc118
Make all of stdout/stderr/stdin pipes close-on-exec when spawing child processes.
...
BUG=
R=sgjesse@google.com
Review URL: https://codereview.chromium.org//1076093004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45370 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-23 07:37:53 +00:00
sgjesse@google.com
9aa4805e21
Add an option for starting a detached process with stdio connected
...
R=lrn@google.com , kustermann@google.com
BUG=
Review URL: https://codereview.chromium.org//890633002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43393 260f80e4-7a28-3924-810f-c04153c831b5
2015-02-03 13:38:38 +00:00
sgjesse@google.com
042462d69b
Refactor the process creation code on POSIX platforms
...
This moved the process creation code to a class, and splits the
single function used before into several methods operation on instance
variables.
The refactor revealed at least one leaked file descriptor.
R=kustermann@google.com
BUG=
Review URL: https://codereview.chromium.org//884143002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43280 260f80e4-7a28-3924-810f-c04153c831b5
2015-01-29 13:06:40 +00:00
sgjesse@google.com
f1b1e4a8db
Aling process implementation and fix bugs
...
Aling the code for dart:io process as much as possible between Linux,
Mac OS and Android prior to refactiring the code.
On Mac OS file descriptors where not closed corrently. On Linux EINTR
was not expected for all calls.
R=kustermann@google.com , kunstemann@google.com
BUG=
Review URL: https://codereview.chromium.org//882093002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43274 260f80e4-7a28-3924-810f-c04153c831b5
2015-01-29 11:54:54 +00:00
sgjesse@google.com
f6a10fbdf1
Add support for starting a detached process
...
BUG=http://dartbug.com/20970
R=kustermann@google.com , lrn@google.com
Review URL: https://codereview.chromium.org//798743004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43070 260f80e4-7a28-3924-810f-c04153c831b5
2015-01-22 11:49:39 +00:00
iposva@google.com
5a383e7add
- Make sure that the threads for dart::bin are in the correct namespace.
...
R=asiva@google.com
Review URL: https://codereview.chromium.org//471743002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39233 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-14 00:06:04 +00:00
iposva@google.com
14ecdbd66a
- Separate the thread implementation used in bin/ and vm/
...
to allow us to make VM specific changes.
R=asiva@google.com
Review URL: https://codereview.chromium.org//463993002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39172 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-12 23:19:53 +00:00
ajohnsen@google.com
6906b3ba5f
Fix listening for multiple signals.
...
BUG=https://code.google.com/p/dart/issues/detail?id=18793
R=sgjesse@google.com
Review URL: https://codereview.chromium.org//285023002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@36153 260f80e4-7a28-3924-810f-c04153c831b5
2014-05-14 09:36:03 +00:00
ajohnsen@google.com
03429c2ee6
Allow internal usage of SIGQUIT signal listening.
...
BUG=
R=sgjesse@google.com
Review URL: https://codereview.chromium.org//262463002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35616 260f80e4-7a28-3924-810f-c04153c831b5
2014-05-01 08:01:09 +00:00
ajohnsen@google.com
ca58691974
Mark pipe as close-on-exec.
...
BUG=
R=sgjesse@google.com
Review URL: https://codereview.chromium.org//251403004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35354 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-24 07:34:07 +00:00
ajohnsen@google.com
59fcec073c
Don't make the signal-pipe non-blocking.
...
This is an attempt to make it run on MIPS. The non-blocking is not
needed here.
BUG=https://code.google.com/p/dart/issues/detail?id=17826
R=sgjesse@google.com
Review URL: https://codereview.chromium.org//220863003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34594 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-01 12:15:21 +00:00
ajohnsen@google.com
0c157cd31e
Move signal_blocker to platform and use it by default in TEMP_FAILURE_RETRY.
...
BUG=http://code.google.com/p/dart/issues/detail?id=16927
R=johnmccutchan@google.com , sgjesse@google.com
Review URL: https://codereview.chromium.org//165723007
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33745 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-17 13:51:11 +00:00
ajohnsen@google.com
36ba03fd0c
Use signal-block around fork() to avoid we block it.
...
This issue is seen on a single-core VM.
BUG=https://code.google.com/p/dart/issues/detail?id=17217
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org//176933006
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33219 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-03 15:38:22 +00:00
ajohnsen@google.com
2f60129fb0
Document ProcessSignal::watch.
...
We now also allow watching for SIGTERM.
BUG=
R=sgjesse@google.com
Review URL: https://codereview.chromium.org//149253013
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32416 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-07 09:41:38 +00:00
ajohnsen@google.com
3bc42be527
Block other signals while handling a signal.
...
BUG=
R=sgjesse@google.com
Review URL: https://codereview.chromium.org//118713003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31331 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-20 12:12:17 +00:00
ajohnsen@google.com
38d0fad2c7
Signal handling, take 2.
...
BUG=
R=sgjesse@google.com
Review URL: https://codereview.chromium.org//119093007
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31276 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-19 15:07:48 +00:00
ajohnsen@google.com
f24f568571
Revert "Signal handling."
...
This reverts commit r31270.
BUG=
Review URL: https://codereview.chromium.org//105083009
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31275 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-19 14:03:15 +00:00
ajohnsen@google.com
e8d9794c70
Signal handling.
...
BUG=
R=sgjesse@google.com
Review URL: https://codereview.chromium.org//108003009
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31270 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-19 13:08:26 +00:00
ajohnsen@google.com
1cd800214f
Always wait for child processes when forked, even if the process failed.
...
BUG=
R=sgjesse@google.com
Review URL: https://codereview.chromium.org//23494048
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27384 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-11 14:29:23 +00:00
ajohnsen@google.com
6949a7bd08
Simplify process exit-code handling on Posix, take 2.
...
As in https://codereview.chromium.org/24024007 , except the monitor->Wait
is now called in a loop with a guard, to ensure we actually do get notified.
Also, now correctly exiting the thread if we have no more child
processes, using the initialize/terminate mutex as guard.
BUG=
R=sgjesse@google.com
Review URL: https://codereview.chromium.org//23717038
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27380 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-11 13:05:13 +00:00
ajohnsen@google.com
bce63cccc9
Revert "Simplify process exit-code handling on Posix."
...
This reverts commit f1b1ba410e964b0f787513f245faf8b457c9331a.
BUG=
Review URL: https://codereview.chromium.org//23536032
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27251 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-06 15:02:31 +00:00
ajohnsen@google.com
5e4135c731
Simplify process exit-code handling on Posix.
...
We now only use waitpid and not signals. When we exit, we perform a
small fork-and-exit to interrupt waitpid, so it can exit the thread.
BUG=
R=sgjesse@google.com
Review URL: https://codereview.chromium.org//24024007
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27247 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-06 13:08:34 +00:00
sgjesse@google.com
f235a79d0d
Remove ASSERT which was reported as a race by ThreadSanitizer
...
R=whesse@google.com
BUG=
Review URL: https://codereview.chromium.org//23903007
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27131 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-04 13:52:59 +00:00
whesse@google.com
6de4e020f2
Fix android compilation by copying process_linux.cc to process_android.cc.
...
These files, in runtime/bin, are the native functions supporting the dart:io
Process class. The android version hadn't been updated when the linux version was changed.
BUG=
R=sgjesse@google.com
Review URL: https://codereview.chromium.org//23428002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@26642 260f80e4-7a28-3924-810f-c04153c831b5
2013-08-26 12:28:08 +00:00
sgjesse@google.com
7c98c1fc66
Fix Process.runSync on 64-bit Mac OS
...
Turned out that for poll on 64-bin Mac OS POLLIN set with 0 available
bytes means closed even though POLLHUP is not set.
Also slighty refactored the loop in the Linux version to make them
look the same.
R=whesse@google.com
BUG=
Review URL: https://codereview.chromium.org//23076002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@26057 260f80e4-7a28-3924-810f-c04153c831b5
2013-08-13 15:56:47 +00:00
sgjesse@google.com
959456533f
Add Process.runSync for running processes synchronously
...
BUG=http://dartbug.com/1707
R=whesse@google.com
Review URL: https://codereview.chromium.org//21816002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@26052 260f80e4-7a28-3924-810f-c04153c831b5
2013-08-13 14:12:31 +00:00
cbracken@google.com
a6ace331f3
Replaced strerror() calls with threadsafe strerror_r().
...
Mac/Android use the XSI-compliant definition of strerror_r() which stores the message in the passed-in buffer.
Linux uses the GNU-specific definition of strerror_r() which takes a buffer and returns the message in a char* (which may or may not be the passed-in buffer).
BUG=
R=iposva@google.com
Review URL: https://codereview.chromium.org//22634003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@25943 260f80e4-7a28-3924-810f-c04153c831b5
2013-08-08 20:24:05 +00:00
ajohnsen@google.com
900dba8e03
Remove static mutexes/monitors from dart:io.
...
BUG=
R=whesse@google.com
Review URL: https://codereview.chromium.org//18080010
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24576 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-28 08:44:15 +00:00
kustermann@google.com
ba62bae621
Fix for leaking file descriptor issue
...
When calling a non-existent executable, a pair of file descriptors will be
created with pipe(). One end goes to the exitcode handler thread, the other end
goes to the epoll() thread.
If an error occurs during process creation, the pipe is still created and the
exit handler thread writes the exitcode to the pipe, but the other file
descriptor is not added to the epoll() set and is therefore leaked. (i.e.
Process_Start ignores the other end of the pipe if exec() failed in
Proces::Start()).
R=sgjesse@google.com
Review URL: https://codereview.chromium.org//15980006
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@23534 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-03 09:41:36 +00:00
smok@google.com
ebbc2020a2
Put everything in runtime/bin into '::dart::bin' namespace.
...
Review URL: https://codereview.chromium.org//14341015
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22032 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-25 14:22:30 +00:00
kustermann@google.com
2eb595367c
Fix of file descriptor inheritance problem in process_{linux,android,mac}
...
BUG=http://dartbug.com/9030
Review URL: https://codereview.chromium.org//12576007
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@19790 260f80e4-7a28-3924-810f-c04153c831b5
2013-03-11 13:35:38 +00:00
iposva@google.com
9046a44a37
Prepare for removal of source_filter.gypi:
...
- Guard OS-dependent source files with #if TARGET_OS_* in a similar
fashion to the architecture dependent sources.
Review URL: https://codereview.chromium.org//12282051
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@18786 260f80e4-7a28-3924-810f-c04153c831b5
2013-02-20 21:17:38 +00:00
kustermann@google.com
c20c523de8
Set close-on-exec flag on pipe() and epoll() file descriptors
...
Review URL: https://codereview.chromium.org//11644017
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16308 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-19 09:36:47 +00:00
ager@google.com
8a14c1c319
Use FormatMessageW for Windows error messages to handle internationalized messages correctly.
...
R=sgjesse@google.com
BUG=dartbug.com/6986
Review URL: https://codereview.chromium.org//11558012
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16041 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-12 14:39:21 +00:00
gram@google.com
3601944836
Revised CL for customisable logging (replacing printfs).
...
Review URL: https://codereview.chromium.org//11312242
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@15096 260f80e4-7a28-3924-810f-c04153c831b5
2012-11-19 17:38:15 +00:00
rnystrom@google.com
908b045578
Look up executable on PATH when given environment variables.
...
Fixes http://code.google.com/p/dart/issues/detail?id=4402
Review URL: https://codereview.chromium.org//11260048
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14300 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-30 18:17:51 +00:00