[Bug]: UnsupportedSpecializationException with `__floor__`
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 68/100
Research direction
Start with the floor call in the reproducer and the IntBuiltinsFactory FloorNode entry shown in the stack trace. Check how the string argument is handled and run the relevant GraalPy tests; done means the snippet no longer raises UnsupportedSpecializationException.
Written by the indexing model from the issue text.
Description
Describe the bug
GraalPy crashes when running this fuzzed code:
from signal import Handlers
Handlers.__floor__('')
Operating system
Linux
CPU architecture
x86_64
GraalPy version
GraalPy 3.13.14 (Oracle GraalVM Native 25.3.4.1)
JDK version
No response
Context configuration
No response
Steps to reproduce
Snippet listed above
Expected behavior
No crash
Stack trace
Unexpected values provided for IntBuiltinsFactory.FloorNodeFactory.FloorNodeGen@3f727b16: [], [TruffleString]
com.oracle.truffle.api.dsl.UnsupportedSpecializationException: Unexpected values provided for IntBuiltinsFactory.FloorNodeFactory.FloorNodeGen@3f727b16: [], [TruffleString]
at org.graalvm.py/com.oracle.graal.python.builtins.objects.ints.IntBuiltinsFactory$FloorNodeFactory$FloorNodeGen.executeAndSpecialize(IntBuiltinsFactory.java:5265)
at org.graalvm.py/com.oracle.graal.python.builtins.objects.ints.IntBuiltinsFactory$FloorNodeFactory$FloorNodeGen.execute(IntBuiltinsFactory.java:5230)
at org.graalvm.py/com.oracle.graal.python.nodes.function.builtins.BuiltinCallNode$BuiltinUnaryCallNode.execute(BuiltinCallNode.java:84)
at org.graalvm.py/com.oracle.graal.python.nodes.function.BuiltinFunctionRootNode.execute(BuiltinFunctionRootNode.java:337)
at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:808)
at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:722)
at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:641)
at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:124)
at com.oracle.truffle.enterprise.svm/com.oracle.svm.enterprise.truffle.compiler.SubstrateEnterpriseOptimizedCallTarget.invokeCompiledAdapterOrCallBoundary(SubstrateEnterpriseOptimizedCallTarget.java:293)
at com.oracle.truffle.enterprise.svm/com.oracle.svm.enterprise.truffle.compiler.SubstrateEnterpriseOptimizedCallTarget.invokeFromInterpreter(SubstrateEnterpriseOptimizedCallTarget.java:269)
at com.oracle.truffle.enterprise.svm/com.oracle.svm.enterprise.truffle.compiler.SubstrateEnterpriseOptimizedCallTarget.doInvoke(SubstrateEnterpriseOptimizedCallTarget.java:255)
at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:573)
at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.call(OptimizedCallTarget.java:519)
at org.graalvm.truffle/com.oracle.truffle.api.nodes.IndirectCallNode$1.call(IndirectCallNode.java:96)
at org.graalvm.py/com.oracle.graal.python.nodes.call.CallDispatchers$SimpleIndirectInvokeNode.doIndirect(CallDispatchers.java:167)
at org.graalvm.py/com.oracle.graal.python.nodes.call.CallDispatchersFactory$SimpleIndirectInvokeNodeGen$Uncached.execute(CallDispatchersFactory.java:307)
at org.graalvm.py/com.oracle.graal.python.nodes.call.CallDispatchers$BuiltinFunctionCachedCallNode.callBuiltinFunctionMegamorphic(CallDispatchers.java:265)
at org.graalvm.py/com.oracle.graal.python.nodes.call.CallDispatchersFactory$BuiltinFunctionCachedCallNodeGen$Uncached.execute(CallDispatchersFactory.java:1173)
at org.graalvm.py/com.oracle.graal.python.nodes.call.CallNode.builtinFunctionCall(CallNode.java:152)
at org.graalvm.py/com.oracle.graal.python.nodes.call.CallNodeGen$Uncached.executeInternal(CallNodeGen.java:619)
at org.graalvm.py/com.oracle.graal.python.nodes.call.CallNode.execute(CallNode.java:128)
at org.graalvm.py/com.oracle.graal.python.nodes.call.special.CallBinaryMethodNode.call(CallBinaryMethodNode.java:181)
at org.graalvm.py/com.oracle.graal.python.nodes.bytecode_dsl.PBytecodeDSLRootNodeGen$CallBinaryMethod_Node.execute$uncached(PBytecodeDSLRootNodeGen.java)
at org.graalvm.py/com.oracle.graal.python.nodes.bytecode_dsl.PBytecodeDSLRootNodeGen$UncachedBytecodeNodeTailCall.handleCallBinaryMethod_(PBytecodeDSLRootNodeGen.java:37865)
at org.graalvm.py/com.oracle.graal.python.nodes.bytecode_dsl.PBytecodeDSLRootNodeGen$UncachedBytecodeNodeTailCall.__stub_handleCallBinaryMethod_(PBytecodeDSLRootNodeGen.java:0)
at org.graalvm.py/com.oracle.graal.python.nodes.bytecode_dsl.PBytecodeDSLRootNodeGen$UncachedBytecodeNodeTailCall.continueAt(PBytecodeDSLRootNodeGen.java:35093)
at org.graalvm.py/com.oracle.graal.python.nodes.bytecode_dsl.PBytecodeDSLRootNodeGen.continueAt(PBytecodeDSLRootNodeGen.java:3501)
at org.graalvm.py/com.oracle.graal.python.nodes.bytecode_dsl.PBytecodeDSLRootNodeGen.execute(PBytecodeDSLRootNodeGen.java:3493)
[...snip...]
Additional context
No response
- Dominant language
- Python
- Stars
- 1.6k
- Forks
- 155
- Avg merge
- 8h 20m
- Merged PRs (30d)
- 43
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from oracle/graalpython
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
oracle/graalpython#1105 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
oracle/graalpython#1102 ·
-
bug
Difficulty 3/5 1-2 days Newbie friendliness 74/100
oracle/graalpython#1133 ·
-
bug
Difficulty 3/5 1-2 days Newbie friendliness 68/100
oracle/graalpython#1111 ·
-
bug
Difficulty 3/5 1-2 days Newbie friendliness 72/100
oracle/graalpython#1110 · 1 comment ·
All issues in oracle/graalpython
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
anthropics/skills#1811 · 1 comment ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
speaches-ai/speaches#678 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
datalayer/mcp-compose#42 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
conda-forge/spacy-feedstock#177 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
UKGovernmentBEIS/inspect_evals#2523 ·