52987 Commits

Author SHA1 Message Date
nobu
61eaa5e3f2 Convert MJIT_CC to Windows path on msys too
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65607 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-07 14:27:27 +00:00
svn
fc14c408aa * expand tabs. [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65606 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-07 12:48:39 +00:00
nobu
d99d8cc868 Add cast to suppress warnings on Solaris [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65605 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-07 12:48:36 +00:00
nobu
adb723bce7 + sign in the path of ruby needs to be escaped
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65604 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-07 11:38:08 +00:00
nobu
9e61839765 Generalize r65594
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65603 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-07 10:55:24 +00:00
nobu
f84577ba84 clean mjit_build_dir.dylib.dSYM directory on macOS
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65602 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-07 10:55:23 +00:00
svn
ebf5899030 * expand tabs.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65601 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-07 08:13:24 +00:00
mame
b06649b912 Rename get/setinlinecache to opt_get/opt_setinlinecache
The instructions are just for optimization.  To clarity the intention,
this change adds the prefix "opt_", like "opt_case_dispatch".

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65600 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-07 08:13:20 +00:00
k0kubun
c8cfd78b40 mjit_worker.c: stop expanding already-absolute MJIT_CC
r65577 seems to have made MJIT_CC (MJIT_CC_COMMONA) become an absolute
path. So start_process doesn't need to find that from PATH by dln_find_exe_r.

This commit is motivated by the msys2 AppVeyor CI failure:
https://ci.appveyor.com/project/ruby/ruby/builds/20084104/job/1pg15os4dtttyl0q

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65599 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-07 08:04:39 +00:00
shyouhei
3f6a4be3a4 vm_backtrace.c: pos can be zero
(lldb) target create "./miniruby"
Current executable set to './miniruby' (x86_64).
(lldb) settings set -- target.run-args  "-e0"
(lldb) run
Process 97005 launched: './miniruby' (x86_64)
./miniruby(rb_print_backtrace+0x15) [0x10024f7d5] vm_dump.c:715
./miniruby(rb_vm_get_sourceline+0x85) [0x10024c4f5] vm_backtrace.c:43
./miniruby(rb_vm_make_binding+0x146) [0x100236976] vm.c:941
./miniruby(Init_VM+0x592) [0x100249f02] vm.c:3091
./miniruby(rb_call_inits+0xc2) [0x1000c5a72] inits.c:58
./miniruby(ruby_setup+0xcb) [0x100098c6b] eval.c:74
./miniruby(ruby_init+0x9) [0x100098c99] eval.c:91
./miniruby(main+0x4d) [0x10025ddbd] addr2line.c:246
Process 97005 stopped
* thread #1: tid = 0x639bb, 0x000000010024c4f5 miniruby`rb_vm_get_sourceline(cfp=<unavailable>) + 133 at vm_backtrace.c:44, queue = 'com.apple.main-thread', stop reason = EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
    frame #0: 0x000000010024c4f5 miniruby`rb_vm_get_sourceline(cfp=<unavailable>) + 133 at vm_backtrace.c:44
   41       else {
   42           /* SDR() is not possible; that causes infinite loop. */
   43           rb_print_backtrace();
-> 44           __builtin_trap();
   45       }
   46   #endif
   47       return rb_iseq_line_no(iseq, pos);
(lldb)



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65598 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-07 08:04:33 +00:00
shyouhei
0f36bc093f insns.def: forgot add cast [ci skip]
See r65595


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65597 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-07 08:03:10 +00:00
nobu
76566bfd58 ruby-runner.c: enable MJIT_SEARCH_BUILD_DIR only if no relative loading
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65596 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-07 07:21:00 +00:00
shyouhei
48649e4625 insns.def: avoid integer overflow
In these expressions `1` is of type `signed int` (cf: ISO/IEC
9899:1990 section 6.1.3.2). The variable (e.g. `num`) is of type
`rb_num_t`, which is in fact `unsigned long`.  These two expressions
then exercises the "usual arithmetic conversions" (cf: ISO/IEC
9899:1990 section 6.2.1.5) and both eventually become `unsigned long`.
The two unsigned expressions are then subtracted to generate another
unsigned integer expression (cf: ISO/IEC 9899:1990 section 6.3.6).
This is where integer overflows can occur.  OTOH the left hand side of
the assignments are `rb_snum_t` which is `signed long`.  The
assignments exercise the "implicit conversion" of "an unsigned integer
is converted to its corresponding signed integer" case (cf: ISO/IEC
9899:1990 section 6.2.1.2), which is "implementation-defined" (read:
not portable).

Casts are the proper way to avoid this problem.  Because all
expressions are converted to some integer types before any binary
operations are performed, the assignments now have fully defined
behaviour.  These values can never exceed LONG_MAX so the casts must
not lose any information.

See also: https://travis-ci.org/ruby/ruby/jobs/451726874#L4357


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65595 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-07 07:16:50 +00:00
k0kubun
ecbd0d79ed test_process.rb: avoid test failure by r65588
on macOS.
https://travis-ci.org/ruby/ruby/jobs/451709313

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65594 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-07 07:15:33 +00:00
shyouhei
391811c1ce .travis.yml: UNALIGNED_WORD_ACCESS=0 for UBSAN
Unaligned word access warnings generated by UBSAN are often
treated well already, depending on this macro.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65593 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-07 05:26:11 +00:00
shyouhei
74fe1cc3d9 string.c: this assumption is false [ci skip]
Looking at the lines right above, it is clear than a blue sky
that we cannot assume `p` to be aligned at all when
UNALIGNED_WORD_ACCESS is true.  It is a wrong idea to use
__builtin_assume_aligned for that situation.

See also: https://travis-ci.org/ruby/ruby/jobs/451710732#L2007


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65592 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-07 05:23:03 +00:00
kazu
4d3c254ebe Fix call-seq [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65591 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-07 05:07:56 +00:00
shyouhei
9722ed0e52 suppress GCC warning about unknown sanitizers
See also: https://travis-ci.org/ruby/ruby/jobs/451710726#L1941


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65590 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-07 04:56:24 +00:00
shyouhei
234ffbce0e blacklist UBSAN's unsigned integer overflow
Integer overflow for unsigned types are fully defined in C. They
are not always problematic (but not always OK).  These functions
in this changeset intentionally utilizes that behaviour.
Blacklist from UBSAN checks for better output.

See also: https://travis-ci.org/ruby/ruby/jobs/451624829


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65589 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-07 04:09:05 +00:00
nobu
c818b2fcf4 ruby-runner.c: enable MJIT_SEARCH_BUILD_DIR
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65588 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-07 04:02:14 +00:00
nobu
f837601cdb mjit_build_dir: separate MJIT_BUILD_DIR
* Makefile.in (mjit_build_dir.so): separate MJIT_BUILD_DIR to
  eliminate the feature for test-all after installation.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65587 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-07 02:49:26 +00:00
nobu
92e9f61579 Fix build_os:host_os pair
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65586 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-06 23:50:50 +00:00
svn
ca2e522587 * 2018-11-07
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65585 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-06 22:56:00 +00:00
mame
9c40a9545a Revert "thread.c (rb_wait_for_single_fd): no point initializing pollfd.revents"
It may cause an access to uninitialized variables.
The call to ppoll will set the `revents` field, but ppoll is not always
called because it is in the guard `!RUBY_VM_INTERRUPTED(th->ec)`.
This issue was found by Coverity Scan.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65584 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-06 22:55:57 +00:00
hsbt
e6bf368cac Removed VCR cassettes files for reducing package size.
[Bug #14219]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65583 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-06 20:47:09 +00:00
nobu
78bf275c56 Expand MJIT_CC in configure
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65577 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-06 12:08:54 +00:00
shyouhei
bb2ee549ef workaround C++ism in ASAN header
See also: https://travis-ci.org/ruby/ruby/jobs/451299690


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65576 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-06 11:53:01 +00:00
svn
3f97d88ac4 * expand tabs.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65575 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-06 10:19:59 +00:00
shyouhei
5fcc43e2d3 cont.c: direct use of rb_thread_t
The only usage of rb_fiber_reset_root_local_storage() is from
ruby_vm_destruct(), where the object space is already terminated.
This `th->self` is not alive.  Why not just use `th` itself.

See also: https://travis-ci.org/ruby/ruby/jobs/451294954


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65574 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-06 10:19:55 +00:00
shyouhei
4a80c0540f adopt sanitizer API
These APIs are much like <valgrind/memcheck.h>. Use them to
fine-grain annotate the usage of our memory.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65573 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-06 10:06:07 +00:00
k0kubun
dbd90b2dff mjit.c: don't use mutex before checking availability
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65572 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-06 08:01:28 +00:00
k0kubun
6c2014768e mjit_worker.c: don't use _one for now
I'm planning to use _one later, but it may be doubly registered by
switching `stop_worker_p` now and so we should not use _one for now.

Otherwise stale job may reject new job registration and
copy_cache_from_main_thread may wait forever.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65571 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-06 07:30:37 +00:00
nobu
e0a3558668 Makefile.in: do not expand MJIT_CC if cross compiling
* Makefile.in (mjit_config.h): expand MJIT_CC only if native
  build, the path on cross compiling host is useless.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65570 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-06 07:28:11 +00:00
k0kubun
7a2263fb38 mjit_worker.c: strictly control MJIT copy job
-available region. reducing risk of SEGV in mjit_copy_job_handler() like
http://ci.rvm.jp/results/trunk-mjit@silicon-docker/1446117

I'm not sure which exact part is causing "[BUG] Segmentation fault at 0x0000000000000008"
on `(mjit_copy_job_handler+0x12) [0x564a6c4ce632] /home/ko1/ruby/src/trunk-mjit/mjit.c:26`...

mjit.c: ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65569 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-06 07:22:25 +00:00
nobu
9f17712d2c Makefile.in: convert MJIT_CC to Windows path
* Makefile.in (mjit_config.h): convert MJIT_CC to Windows path on
  mingw.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65568 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-06 07:03:24 +00:00
ko1
09821dd2a5 Fix TracePoint for nested iseq loaded from binary [Bug#14702]
When loading iseq from binary while a TracePoint is on, we need to
recompile instructions to their "trace_" variant. Before this commit
we only recompiled instructions in the top level iseq, which meant
that TracePoint was malfunctioning for code inside module/class/method
definitions.

* compile.c: Move rb_iseq_init_trace to rb_ibf_load_iseq_complete.
  It is called on all iseqs during loading.

* test_iseq.rb: Test that tracepoints fire within children iseq when
  using load_from_binary.

This patch is from: Alan Wu <XrXr@users.noreply.github.com>


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65567 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-06 06:36:51 +00:00
nobu
b11b804f8f Revert "mjit_build_dir: separate MJIT_BUILD_DIR"
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65566 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-06 05:14:36 +00:00
shyouhei
a5400ebbd5 do not delete function declarations in case of non-sanitizing builds
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65565 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-06 05:07:54 +00:00
shyouhei
cbb6a3a6aa annotate functions to blacklist MSAN
In these functions we are intentionally reading memory address
not owned by us.  These reads should not be diagnosed.

See also [Bug #8680]
See also https://travis-ci.org/ruby/ruby/jobs/451202718



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65564 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-06 05:06:20 +00:00
nobu
a39080f59c mjit_build_dir: separate MJIT_BUILD_DIR
* Makefile.in (mjit_build_dir.so): separate MJIT_BUILD_DIR to
  eliminate the feature for test-all after installation.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65563 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-06 04:13:48 +00:00
nobu
a4b73e7e9f Makefile.in: make MJIT_CC_COMMON an absolute path
* Makefile.in (mjit_config.h): expand MJIT_CC_COMMON path to
  mitigate potential security risks.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65562 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-06 04:13:47 +00:00
nobu
67de434219 configure.ac: insert DLDSHARED
* configure.ac (DLDSHARED): `.dylib` (created by `-dynamiclib`)
  and `.bundle` (created by `-dynamic -bundle`) on macOS are
  different.  `LIBRUBY_LDSHARED` should be the former always.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65561 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-06 03:32:57 +00:00
usa
f740687e78 Fixed compile error introduced at r65558
* internal.h (ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS): of course, parens around
  function signature in its definition is syntax error.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65560 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-06 03:18:23 +00:00
shyouhei
1a83433f3d .travis.yml: FIBER_USE_NATIVE=0
I remember this configuration unveiled several bugs before.
Better check it occasionally.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65559 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-06 03:06:33 +00:00
shyouhei
16f5b18b7a gc.c: move ASAN check to configure
Availability of attributes are checked in configure these days,
rather than compiler macros.  Also
__attribute__((no_address_safety_analysis)) is considered
deprecated in both GCC and Clang.  Use the current best practice
if available.  See also:

https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html
https://clang.llvm.org/docs/AddressSanitizer.html


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65558 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-06 02:57:28 +00:00
shyouhei
ee7af44257 .travis.yml: allow UBSAN to fail
Forgot this line, sorry! 


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65557 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-06 01:45:09 +00:00
shyouhei
19adb8082a .travis.yml: add cron-only builds
Inspired by [GH-1984], let us add some tests that run only
once a day.  These configurations are either slow to compile
or slow to run.  But I think they are worth done occasionally.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65556 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-06 01:36:20 +00:00
svn
cc508b544d * expand tabs.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65555 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-05 23:06:58 +00:00
naruse
fdcc9c9e43 Don't set throw data as cause [Bug #15282]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65554 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-05 23:06:50 +00:00
normal
c076d6009c thread.c (rb_wait_for_single_fd): no point initializing pollfd.revents
poll(2) and ppoll(2) implementations need to check and write to
.revents on the initial scan, anyways.  So any poll/ppoll call
which returns a positive result can be expected to have an
initialized .revents value.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65553 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-05 22:56:57 +00:00