ruby/bootstraptest
Jimmy Miller 98e9165b0a
Fix bug involving .send and overwritten methods. (#6752)
@casperisfine reporting a bug in this gist https://gist.github.com/casperisfine/d59e297fba38eb3905a3d7152b9e9350

After investigating I found it was caused by a combination of send and a c_func that we have overwritten in the JIT. For send calls, we need to do some stack manipulation before making the call. Because of the way exits works, we need to do that stack manipulation at the last possible moment. In this case, we weren't doing that stack manipulation at all. Unfortunately, with how the code is structured there isn't a great place to do that stack manipulation for our overridden C funcs.

Each overridden C func can return a boolean stating that it shouldn't be used. We would need to do the stack manipulation after all of those checks are done. We could pass a lambda(?) or separate out the logic for "can I run this override" from "now generate the code for it". Since we are coming up on a release, I went with the path of least resistence and just decided to not use these overrides if we are in a send call.

We definitely should revist this in the future.
2022-11-17 23:17:40 -05:00
..
pending.rb Moved already resolved test 2020-04-27 10:39:07 +09:00
runner.rb Let other test runners follow the change of GNU make 4.4 jobserver 2022-11-07 10:08:30 +09:00
test_attr.rb Revert "Revert "This commit implements the Object Shapes technique in CRuby."" 2022-10-11 08:40:56 -07:00
test_autoload.rb support concurrent btest execution 2022-02-06 03:05:47 +09:00
test_block.rb vm_insnhelper.c: break from nested rescue 2015-01-23 14:57:08 +00:00
test_class.rb vm.c: initialize defined_module_hash early 2013-10-13 11:59:27 +00:00
test_constant_cache.rb Finer-grained constant cache invalidation (take 2) 2022-04-01 14:48:22 -04:00
test_env.rb fallback env encoding to ASCII-8BIT 2018-09-26 17:24:00 +00:00
test_eval.rb btest: assign $stderr = STDOUT instead of IO#reopen to be more portable 2021-12-16 16:16:40 +09:00
test_exception.rb error.c: bypass Exception.new 2018-02-20 10:08:27 +00:00
test_fiber.rb support concurrent btest execution 2022-02-06 03:05:47 +09:00
test_finalizer.rb * gc.c (rb_gc_call_finalizer_at_exit): self-referencing finalizers 2008-08-06 11:48:30 +00:00
test_flip.rb * bootstraptest/test_flip.rb: new test for flip-flop operator. 2007-07-10 06:57:56 +00:00
test_flow.rb Make proc/Proc.new without block an error instead of warning 2020-06-10 17:49:54 -07:00
test_fork.rb bootstraptest/test_fork.rb: Stop too restrict NPROC test temporarily 2018-01-09 08:05:40 +00:00
test_gc.rb * bootstraptest/test_gc.rb: added tests based on [ruby-dev:39484] 2009-10-16 09:42:20 +00:00
test_insns.rb Add one more test example for swap instruction 2021-11-09 16:56:44 +09:00
test_io.rb omit random failure in bootstraptest with freebsd 2022-09-06 16:27:12 +09:00
test_jump.rb btest: assign $stderr = STDOUT instead of IO#reopen to be more portable 2021-12-16 16:16:40 +09:00
test_literal.rb [wasm] bootstraptest, basictest: disable backquote literal tests 2022-01-19 11:19:06 +09:00
test_literal_suffix.rb parse.y: more token names 2019-01-21 10:24:56 +00:00
test_load.rb * file.c (file_load_ok): checks if regular file. [ruby-dev:38097] 2009-02-27 06:49:43 +00:00
test_marshal.rb bootstraptest/test_marshal.rb: test updated 2008-03-01 04:07:26 +00:00
test_massign.rb * insns.def (expandarray): fix stack inc. 2008-01-23 17:17:23 +00:00
test_method.rb support concurrent btest execution 2022-02-06 03:05:47 +09:00
test_objectspace.rb Use a monotonically increasing number for object_id 2019-11-07 09:31:07 -08:00
test_proc.rb Make proc/Proc.new without block an error instead of warning 2020-06-10 17:49:54 -07:00
test_ractor.rb Rename --mjit-min-calls to --mjit-call-threshold (#6731) 2022-11-14 23:38:52 -08:00
test_string.rb * string.c (str_discard): does not free for STR_NOFREE string. 2015-02-13 13:06:58 +00:00
test_struct.rb * bootstraptest/test_struct.rb: some test moved from test to shut 2008-03-13 16:40:33 +00:00
test_syntax.rb btest: assign $stderr = STDOUT instead of IO#reopen to be more portable 2021-12-16 16:16:40 +09:00
test_thread.rb support concurrent btest execution 2022-02-06 03:05:47 +09:00
test_yjit.rb Fix bug involving .send and overwritten methods. (#6752) 2022-11-17 23:17:40 -05:00
test_yjit_30k_ifelse.rb * append newline at EOF. [ci skip] 2021-10-21 08:12:53 +09:00
test_yjit_30k_methods.rb * append newline at EOF. [ci skip] 2021-10-21 08:12:53 +09:00
test_yjit_rust_port.rb Rust YJIT 2022-04-27 11:00:22 -04:00