summaryrefslogtreecommitdiff
path: root/process.c
Commit message (Collapse)AuthorAgeFilesLines
...
* Preserve encoding in error messages for invalid user/group nameNobuyoshi Nakada2020-04-161-2/+2
|
* Preserve encoding in error message for invalid env exec optionNobuyoshi Nakada2020-04-161-1/+1
|
* Add a a list of cases for which clock_getres() has been observed to be ↵Benoit Daloze2020-04-131-1/+4
| | | | | | inaccurate * See [Bug #16740]
* [DOC] Fixed POSIX clock_getres(3) link [ci skip]Nobuyoshi Nakada2020-04-101-1/+1
| | | | It should not be linked to `Process.clock_getes`.
* Warn about Process#clock_getres being unreliable in documentationBenoit Daloze2020-04-101-11/+12
| | | | | | * [Bug #16740] * Remove the GETTIMEOFDAY_BASED_CLOCK_REALTIME example because the caveat applies to all clock ids, not just the Symbol clock ids.
* Suppress -Wswitch warningsNobuyoshi Nakada2020-04-081-0/+2
|
* Merge pull request #2991 from shyouhei/ruby.h卜部昌平2020-04-081-1/+1
| | | Split ruby.h
* Fixed a potential memory leakNobuyoshi Nakada2020-02-121-3/+2
| | | | `rb_str_new_cstr` can raise a `NoMemoryError`.
* Removed unnecessary conversionNobuyoshi Nakada2020-02-121-2/+0
| | | | Paths in `rb_execarg_t` should have been converted already.
* Restart timer thread even after preparation failedNobuyoshi Nakada2020-02-111-2/+9
| | | | | If the timer thread is left stopped, memory crash or segfault can happen.
* decouple internal.h headers卜部昌平2019-12-261-26/+46
| | | | | | | | | | | | | | | | | | Saves comitters' daily life by avoid #include-ing everything from internal.h to make each file do so instead. This would significantly speed up incremental builds. We take the following inclusion order in this changeset: 1. "ruby/config.h", where _GNU_SOURCE is defined (must be the very first thing among everything). 2. RUBY_EXTCONF_H if any. 3. Standard C headers, sorted alphabetically. 4. Other system headers, maybe guarded by #ifdef 5. Everything else, sorted alphabetically. Exceptions are those win32-related headers, which tend not be self- containing (headers have inclusion order dependencies).
* [DOC] Fix grammar in Process module docsMarcus Stollsteimer2019-12-241-4/+4
|
* Fixed misspellingsNobuyoshi Nakada2019-12-201-1/+1
| | | | Fixed misspellings reported at [Bug #16437], only in ruby and rubyspec.
* Kernel#abort without arguments should print error infoNobuyoshi Nakada2019-12-161-1/+1
| | | | [Bug #16424]
* delete unused codes卜部昌平2019-11-181-2/+0
| | | | Suppress compiler warnings.
* Warn on access/modify of $SAFE, and remove effects of modifying $SAFEJeremy Evans2019-11-181-12/+0
| | | | | | | | | | | | | | | | | This removes the security features added by $SAFE = 1, and warns for access or modification of $SAFE from Ruby-level, as well as warning when calling all public C functions related to $SAFE. This modifies some internal functions that took a safe level argument to no longer take the argument. rb_require_safe now warns, rb_require_string has been added as a version that takes a VALUE and does not warn. One public C function that still takes a safe level argument and that this doesn't warn for is rb_eval_cmd. We may want to consider adding an alternative method that does not take a safe level argument, and warn for rb_eval_cmd.
* Use the dedicated function `rb_io_check_io`Nobuyoshi Nakada2019-11-041-1/+1
|
* Documentation improvements for Ruby corezverok2019-10-261-2/+14
| | | | | | | | | | | * Top-level `return`; * Documentation for comments syntax; * `rescue` inside blocks; * Enhance `Object#to_enum` docs; * Make `chomp:` option more obvious for `String#each_line` and `#lines`; * Enhance `Proc#>>` and `#<<` docs; * Enhance `Processs` class docs.
* Fix potential memory leaks by `rb_imemo_tmpbuf_auto_free_pointer`Nobuyoshi Nakada2019-10-051-2/+2
| | | | | | | | | | | | | | This function has been used wrongly always at first, "allocate a buffer then wrap it with tmpbuf". This order can cause a memory leak, as tmpbuf creation also can raise a NoMemoryError exception. The right order is "create a tmpbuf then allocate&wrap a buffer". So the argument of this function is rather harmful than just useless. TODO: * Rename this function to more proper name, as it is not used "temporary" (function local) purpose. * Allocate and wrap at once safely, like `ALLOCV`.
* Remove call-seq for method that doesn't exist (#2521)Alan Wu2019-10-041-1/+0
| | | | | | | | | | | | ``` $ ruby -ve 'IO.popen("ls"){}; $?.to_int' ruby 2.6.4p104 (2019-08-28 revision 67798) [x86_64-darwin18] Traceback (most recent call last): -e:1:in `<main>': undefined method `to_int' for #<Process::Status: pid 33989 SIGPIPE (signal 13)> (NoMethodError) Did you mean? to_i taint ``` Process::Status#to_int was removed at 7ba5c4e.
* Add version that FreeBSD supports `CLOCK_PROCESS_CPUTIME_ID` [ci skip]yuuji.yaginuma2019-09-051-1/+1
| | | | | | | | | Seems FreeBSD already supported `CLOCK_PROCESS_CPUTIME_ID`. That added by https://reviews.freebsd.org/rS239347 and the doc was updated by https://reviews.freebsd.org/rS315694. I confirmed `CLOCK_PROCESS_CPUTIME_ID` constant exists in 9.3.0 branch. https://github.com/freebsd/freebsd/blob/release/9.3.0/sys/sys/time.h#L269
* move docs around [ci skip]卜部昌平2019-08-291-78/+111
| | | | To properly generate documents.
* drop-in type check for rb_define_global_function卜部昌平2019-08-291-9/+26
| | | | | | We can check the function pointer passed to rb_define_global_function like we do so in rb_define_method. It turns out that almost anybody is misunderstanding the API.
* drop-in type check for rb_define_module_function卜部昌平2019-08-291-20/+44
| | | | | | We can check the function pointer passed to rb_define_module_function like how we do so in rb_define_method. The difference is that this changeset reveales lots of atiry mismatches.
* delete `$` sign from C identifiers卜部昌平2019-08-271-4/+4
| | | | | They lack portability. See also https://travis-ci.org/shyouhei/ruby/jobs/577164015
* rb_define_hooked_variable now free from ANYARGS卜部昌平2019-08-271-2/+14
| | | | | | | | | After 5e86b005c0f2ef30df2f9906c7e2f3abefe286a2, I now think ANYARGS is dangerous and should be extinct. This commit uses rb_gvar_getter_t / rb_gvar_setter_t for rb_define_hooked_variable / rb_define_virtual_variable which revealed lots of function prototype inconsistencies. Some of them were literally decades old, going back to dda5dc00cff334cac373096d444a0fd59e716124.
* uid_t and gid_t are narrower than VALUE.卜部昌平2019-08-261-2/+4
| | | | | | | Often uid / gid are 16 bit or 32 bit integers, while VALUE are 32 to 64 bits. They tend to differ in size. Because rb_ensure expects its callbacks to take VALUE arguments, narrowing must be done by hand, otherwise data corruption can happen depending on machine ABI.
* Suppress a "clobbered" warningNobuyoshi Nakada2019-08-261-3/+1
|
* nil as the default of optional parametersNobuyoshi Nakada2019-07-161-9/+7
|
* nil as the default of optional parametersNobuyoshi Nakada2019-07-161-6/+9
|
* Moved the check for `exception` to rb_execarg_addoptNobuyoshi Nakada2019-07-161-10/+13
| | | | | | Check for `exception` option in rb_execarg_addopt, as well as other options. And then raise a particular ArgumentError if it is not allowed.
* process.c (p_sys_setregid, p_sys_setresgid): remove unused tmp bufferYusuke Endoh2019-07-151-4/+0
| | | | To suppress Coverity Scan warning
* process.c: [DOC] remove extra quotes [ci skip]nobu2019-03-301-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67386 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* process.c: [DOC] fix markups [ci skip]nobu2019-03-291-7/+8
| | | | | | * process.c (rb_f_spawn): fix markups as rdoc. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67370 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* process.c: [DOC] fix markups [ci skip]nobu2019-03-291-3/+3
| | | | | | | * process.c (rb_clock_getres): fix code markups, as `+` can not include parentheses. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67369 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* [DOC] fix markups [ci skip]nobu2019-03-281-69/+65
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67354 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* new constant: Process::CLOCK_TAI.akr2019-02-091-0/+5
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67042 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* process.c: [DOC] small improvementsstomar2019-01-201-3/+3
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66886 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* mjit.c: use boolean type for boolean variablesk0kubun2019-01-101-3/+3
| | | | | | | | | | and functions to clarify the intention and make sure it's not used in a surprising way (like using 2, 3, ... other than 0, 1 even while it seems to be a boolean). This is a retry of r66775. It included some typos... git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66778 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Revert "mjit.c: use boolean type for boolean variables"k0kubun2019-01-101-3/+3
| | | | | | | | This reverts commit bb1a1aeab0f2a5fe437c89b841a887ba56653453. We hit something on ci.rvm.jp, reverting until investigation is done. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66776 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* mjit.c: use boolean type for boolean variablesk0kubun2019-01-101-3/+3
| | | | | | | | and functions to clarify the intention and make sure it's not used in a surprising way (like using 2, 3, ... other than 0, 1 even while it seems to be a boolean). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66775 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* process.c: document system(..., exception: true) [ci skip]k0kubun2018-12-291-7/+26
| | | | | | | | From: Victor Shepelev <zverok.offline@gmail.com> [Bug #15480] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66637 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Use idExceptionnobu2018-12-221-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66495 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* process.c (retry_fork_async_signal_safe): fix -Wclobberednobu2018-12-041-3/+4
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66178 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* process.c (retry_fork_async_signal_safe): fix -Wclobbered on i686normal2018-12-031-6/+8
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66173 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* process.c: fix ETXTBUSY from MJIT compiler processnormal2018-12-031-8/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This affects test/ruby/test_process.rb (test_execopt_env_path). Since MJIT uses vfork+execve in a separate thread, there can be small window in-between vfork and execve where tmp_script.cmd is held open by the vforked child. vfork only pauses the MJIT thread, not any Ruby Threads, so our call to Process.spawn will hit ETXTBUSY in that window unless we fork. main thread | MJIT thread ---------------------------------------------------- fd = open(tmp) | | | vfork for CC | CC running write | | --------------- fchmod | | sees "fd" here close(fd) | | Process.spawn called | | vfork (spawn)| (new process) | | | execve => TXTBUSY | | | | | execve (FD_CLOEXEC on fd) | | vfork returns | Holding the waitpid_lock whenever we intend to spawn a process prevents the MJIT thread from spawning a process while we are spawning in Ruby-land. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66171 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* process.c (rb_execarg_init): mark as staticnormal2018-12-031-11/+11
| | | | | | | io.c has not used it since r36229, and we can re-export it if we need it at another time. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66157 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* process.c (rb_f_system): cleanup to use rb_execarg_getnormal2018-12-031-1/+1
| | | | | | | TypedData_* macros hide assignments and are confusing and too long for users of giant fonts. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66156 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* process.c: avoid dlclose before execk0kubun2018-11-261-1/+1
| | | | | | | | | | because JIT-ed code may still be on stack at this time, unlike in ruby_cleanup(). This hopes to fix: (take 2) http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/1480207 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65999 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Revert "process.c: try to workaroun SEGV by r65994"k0kubun2018-11-261-7/+1
| | | | | | | | | This reverts commit 0e6aba22c6b876a36adc39cac5314ce6e626954c. because it didn't help, at all. http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/1480207 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65998 b2dd03c8-39d4-4d8f-98ff-823fe69b080e