Skip to content

Commit 7d05fc7

Browse files
committed
test_thread.py: skip test_unraisable_exception until sys.unraisablehook is intrinsified
1 parent 2b6d1d7 commit 7d05fc7

File tree

2 files changed

+21
-7
lines changed

2 files changed

+21
-7
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/ThreadModuleBuiltins.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242

4343
import static com.oracle.graal.python.builtins.objects.thread.AbstractPythonLock.TIMEOUT_MAX;
4444

45+
import java.io.PrintWriter;
4546
import java.lang.ref.WeakReference;
4647
import java.util.List;
4748

@@ -51,13 +52,13 @@
5152
import com.oracle.graal.python.builtins.PythonBuiltinClassType;
5253
import com.oracle.graal.python.builtins.PythonBuiltins;
5354
import com.oracle.graal.python.builtins.objects.PNone;
55+
import com.oracle.graal.python.builtins.objects.exception.PBaseException;
5456
import com.oracle.graal.python.builtins.objects.function.PKeyword;
5557
import com.oracle.graal.python.builtins.objects.thread.PLock;
5658
import com.oracle.graal.python.builtins.objects.thread.PRLock;
5759
import com.oracle.graal.python.builtins.objects.thread.PThread;
5860
import com.oracle.graal.python.builtins.objects.thread.PThreadLocal;
5961
import com.oracle.graal.python.nodes.ErrorMessages;
60-
import com.oracle.graal.python.nodes.WriteUnraisableNode;
6162
import com.oracle.graal.python.nodes.argument.keywords.ExpandKeywordStarargsNode;
6263
import com.oracle.graal.python.nodes.argument.positional.ExecutePositionalStarargsNode;
6364
import com.oracle.graal.python.nodes.call.CallNode;
@@ -204,14 +205,24 @@ long start(VirtualFrame frame, Object cls, Object callable, Object args, Object
204205
} catch (PythonThreadKillException e) {
205206
return;
206207
} catch (PException e) {
207-
WriteUnraisableNode.getUncached().execute(e.getUnreifiedException(), "in thread started by", callable);
208+
dumpError(context, e.getUnreifiedException(), callable);
209+
// TODO (cbasca): when GR-30386 is completed use the intrinsified
210+
// sys.unraisablehook
211+
// WriteUnraisableNode.getUncached().execute(e.getUnreifiedException(), "in
212+
// thread started by", callable);
208213
}
209214
}, env.getContext(), context.getThreadGroup());
210215

211216
PThread pThread = factory().createPythonThread(cls, thread);
212217
pThread.start();
213218
return pThread.getId();
214219
}
220+
221+
@TruffleBoundary
222+
static void dumpError(PythonContext context, PBaseException exception, Object object) {
223+
PrintWriter err = new PrintWriter(context.getStandardErr());
224+
err.println(String.format("%s in thread started by %s", exception.toString(), object));
225+
}
215226
}
216227

217228
@Builtin(name = "_set_sentinel", minNumOfPositionalArgs = 0)

graalpython/lib-python/3/test/test_thread.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
1+
import time
2+
3+
import _thread as thread
4+
15
import os
2-
import unittest
36
import random
4-
from test import support
5-
import _thread as thread
6-
import time
7+
import unittest
78
import weakref
8-
99
from test import lock_tests
10+
from test import support
11+
from test.support import impl_detail
1012

1113
NUMTASKS = 10
1214
NUMTRIPS = 3
@@ -133,6 +135,7 @@ def task():
133135
time.sleep(POLL_SLEEP)
134136
self.assertEqual(thread._count(), orig)
135137

138+
@impl_detail("[GR-30386] skip until implemented", graalvm=False)
136139
def test_unraisable_exception(self):
137140
def task():
138141
started.release()

0 commit comments

Comments
 (0)