Skip to content

Commit 2a9a3eb

Browse files
committed
stacktrace for unimplemented native function can fail
1 parent a9fcd8e commit 2a9a3eb

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

graalpython/com.oracle.graal.python.cext/src/capi.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -984,11 +984,12 @@ static void print_c_stacktrace() {
984984
#endif
985985

986986
static void unimplemented(const char* name) {
987+
printf("Function not implemented in GraalPy: %s\n", name);
987988
printf("Native stacktrace:\n");
988989
print_c_stacktrace();
989990
}
990991

991-
#define FUNC_NOT_IMPLEMENTED unimplemented(__func__); GraalPyTrufflePrintStacktrace(__func__, "Function not implemented in GraalPy: "); exit(-1);
992+
#define FUNC_NOT_IMPLEMENTED unimplemented(__func__); GraalPyTrufflePrintStacktrace(); exit(-1);
992993

993994
// {{start CAPI_BUILTINS}}
994995
#include "capi.gen.c.h"

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextContextBuiltins.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
import com.oracle.graal.python.builtins.PythonBuiltinClassType;
5454
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBinaryBuiltinNode;
5555
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBuiltin;
56+
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiNullaryBuiltinNode;
5657
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiTernaryBuiltinNode;
5758
import com.oracle.graal.python.builtins.objects.PNone;
5859
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes.PRaiseNativeNode;
@@ -71,13 +72,12 @@
7172

7273
public final class PythonCextContextBuiltins {
7374

74-
@CApiBuiltin(ret = VoidNoReturn, args = {ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString}, call = Ignored)
75-
abstract static class PyTrufflePrintStacktrace extends CApiBinaryBuiltinNode {
75+
@CApiBuiltin(ret = VoidNoReturn, args = {}, call = Ignored)
76+
abstract static class PyTrufflePrintStacktrace extends CApiNullaryBuiltinNode {
7677

7778
@Specialization
7879
@TruffleBoundary
79-
static Object stacktrace(TruffleString where, TruffleString msg) {
80-
System.err.println(msg.toJavaStringUncached() + where.toJavaStringUncached());
80+
static Object stacktrace() {
8181
printPythonLikeStackTrace();
8282
return 0;
8383
}

0 commit comments

Comments
 (0)