Project

General

Profile

Actions

Bug #19145

closed

TestException#test_exception_in_message timeouts

Added by vo.x (Vit Ondruch) 2 months ago. Updated about 2 months ago.

Status:
Closed
Priority:
Normal
Target version:
-
ruby -v:
ruby 3.2.0dev (2022-11-24 master 66e5200ba4) [x86_64-linux]
[ruby-core:110873]

Description

Testing with 66e5200ba4, I observe following error:

$ make -C redhat-linux-build test-all 'TESTS=-v -n /TestException#test_exception_in_message/' 'MSPECOPT=-fs '
make: Entering directory '/builddir/build/BUILD/ruby-3.2.0-66e5200ba4/redhat-linux-build'
Run options: 
  --seed=50244
  "--ruby=./miniruby -I/builddir/build/BUILD/ruby-3.2.0-66e5200ba4/lib -I. -I.ext/common  /builddir/build/BUILD/ruby-3.2.0-66e5200ba4/tool/runruby.rb --extout=.ext  -- --disable-gems"
  --excludes-dir=/builddir/build/BUILD/ruby-3.2.0-66e5200ba4/test/excludes
  --name=!/memory_leak/
  -v
  -n
  /TestException#test_exception_in_message/

# Running tests:

[1/0] TestException#test_exception_in_message = 3.10 sT

  1) Timeout:
TestException#test_exception_in_message

Finished tests in 6.405179s, 0.1561 tests/s, 0.3122 assertions/s.
1 tests, 2 assertions, 0 failures, 1 errors, 0 skips

ruby -v: ruby 3.2.0dev (2022-11-24 master 66e5200ba4) [x86_64-linux]
make: *** [uncommon.mk:855: yes-test-all] Error 1
make: Leaving directory '/builddir/build/BUILD/ruby-3.2.0-66e5200ba4/redhat-linux-build'

Last time I was testing with 4b1504ae0a beginning of November and there was not issue

Updated by mame (Yusuke Endoh) 2 months ago

  • Assignee set to nobu (Nobuyoshi Nakada)

I think it has been happening since @nobu (Nobuyoshi Nakada) tweaked the exit process for https://bugs.ruby-lang.org/issues/19016.

Updated by nobu (Nobuyoshi Nakada) 2 months ago

Does this work?

diff --git a/eval_error.c b/eval_error.c
index 0112dece0d1..7f184691e50 100644
--- a/eval_error.c
+++ b/eval_error.c
@@ -443,6 +443,15 @@ exiting_split(VALUE errinfo, volatile int *exitcode, volatile int *sigstatus)
 
     if (NIL_P(errinfo)) return 0;
 
+    VALUE eclass = CLASS_OF(errinfo);
+    const VALUE *special_exceptions = GET_VM()->special_exceptions;
+    for (enum ruby_special_exceptions i = 0; i < ruby_special_error_count; ++i) {
+        if (eclass == special_exceptions[i]) {
+            if (exitcode) *exitcode = EXIT_FAILURE;
+            return EXITING_WITH_STATUS;
+        }
+    }
+
     if (rb_obj_is_kind_of(errinfo, rb_eSystemExit)) {
         ex = sysexit_status(errinfo);
         result |= EXITING_WITH_STATUS;
Actions #3

Updated by nobu (Nobuyoshi Nakada) 2 months ago

  • Status changed from Open to Closed

Applied in changeset git|67d0f4821ff9ae550425a66202710d82de886384.


[Bug #19145] volatile on an argument may not be effective

Updated by vo.x (Vit Ondruch) about 2 months ago

Thx for the fix. With git|0436f1e15a, I don't observe the timeout anymore.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0