[Bug]: UnsupportedSpecializationException with csv.reader
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 65/100
Research direction
Start with the csv.CSVDialectBuiltins and CSVModuleBuiltins entry points named in the stack trace, then run the reported csv.reader(re.ASCII, int) reproducer. Trace how the unsupported argument is handled and add a regression test demonstrating that the call no longer crashes and produces the expected behavior.
Written by the indexing model from the issue text.
Description
Describe the bug
GraalPy crashes when running this fuzzed code:
import re
from csv import reader
reader(re.ASCII, int)
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 CSVDialectBuiltinsFactory.DialectNodeFactory.DialectNodeGen@448c7dde: [Dialect, <class 'int'>, NoValue, NoValue, NoValue, NoValue, NoValue, NoValue, NoValue, NoValue], [PythonBuiltinClassType,PythonBuiltinClass,PNone,PNone,PNone,PNone,PNone,PNone,PNone,PNone]
com.oracle.truffle.api.dsl.UnsupportedSpecializationException: Unexpected values provided for CSVDialectBuiltinsFactory.DialectNodeFactory.DialectNodeGen@448c7dde: [Dialect, <class 'int'>, NoValue, NoValue, NoValue, NoValue, NoValue, NoValue, NoValue, NoValue], [PythonBuiltinClassType,PythonBuiltinClass,PNone,PNone,PNone,PNone,PNone,PNone,PNone,PNone]
at org.graalvm.py/com.oracle.graal.python.builtins.modules.csv.CSVDialectBuiltinsFactory$DialectNodeFactory$DialectNodeGen.executeAndSpecialize(CSVDialectBuiltinsFactory.java:571)
at org.graalvm.py/com.oracle.graal.python.builtins.modules.csv.CSVDialectBuiltinsFactory$DialectNodeFactory$DialectNodeGen.execute(CSVDialectBuiltinsFactory.java:434)
at org.graalvm.py/com.oracle.graal.python.nodes.function.builtins.BuiltinCallNode$BuiltinAnyCallNode.execute(BuiltinCallNode.java:64)
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.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:94)
at org.graalvm.py/com.oracle.graal.python.nodes.call.CallDispatchers$SimpleDirectInvokeNode.doDirect(CallDispatchers.java:128)
at org.graalvm.py/com.oracle.graal.python.nodes.call.CallDispatchersFactory$SimpleDirectInvokeNodeGen$Inlined.executeAndSpecialize(CallDispatchersFactory.java:135)
at org.graalvm.py/com.oracle.graal.python.nodes.call.CallDispatchersFactory$SimpleDirectInvokeNodeGen$Inlined.execute(CallDispatchersFactory.java:123)
at org.graalvm.py/com.oracle.graal.python.builtins.objects.type.slots.TpSlotVarargs$DispatchVarargsBuiltinFullDirectNode.call(TpSlotVarargs.java:282)
at org.graalvm.py/com.oracle.graal.python.builtins.objects.type.slots.TpSlotVarargsFactory$DispatchVarargsBuiltinFullDirectNodeGen$Inlined.executeAndSpecialize(TpSlotVarargsFactory.java:215)
at org.graalvm.py/com.oracle.graal.python.builtins.objects.type.slots.TpSlotVarargsFactory$DispatchVarargsBuiltinFullDirectNodeGen$Inlined.execute(TpSlotVarargsFactory.java:203)
at org.graalvm.py/com.oracle.graal.python.builtins.objects.type.slots.TpSlotVarargs$CallVarargsTpSlotBaseNode.callCachedBuiltin(TpSlotVarargs.java:254)
at org.graalvm.py/com.oracle.graal.python.builtins.objects.type.slots.TpSlotVarargsFactory$CallSlotTpNewNodeGen$Inlined.executeAndSpecialize(TpSlotVarargsFactory.java:1603)
at org.graalvm.py/com.oracle.graal.python.builtins.objects.type.slots.TpSlotVarargsFactory$CallSlotTpNewNodeGen$Inlined.execute(TpSlotVarargsFactory.java:1562)
at org.graalvm.py/com.oracle.graal.python.builtins.objects.type.TypeBuiltins$CreateInstanceNode.doGeneric(TypeBuiltins.java:536)
at org.graalvm.py/com.oracle.graal.python.builtins.objects.type.TypeBuiltinsFactory$CreateInstanceNodeGen$Inlined.executeAndSpecialize(TypeBuiltinsFactory.java:2021)
at org.graalvm.py/com.oracle.graal.python.builtins.objects.type.TypeBuiltinsFactory$CreateInstanceNodeGen$Inlined.execute(TypeBuiltinsFactory.java:2009)
at org.graalvm.py/com.oracle.graal.python.builtins.objects.type.TypeBuiltins$CallNode.call(TypeBuiltins.java:502)
at org.graalvm.py/com.oracle.graal.python.builtins.objects.type.TypeBuiltinsFactory$CallNodeFactory$CallNodeGen.execute(TypeBuiltinsFactory.java:1820)
at org.graalvm.py/com.oracle.graal.python.builtins.objects.type.slots.TpSlotVarargs$CallVarargsTpSlotBaseNode.callCachedBuiltin(TpSlotVarargs.java:251)
at org.graalvm.py/com.oracle.graal.python.builtins.objects.type.slots.TpSlotVarargsFactory$CallSlotTpCallNodeGen$Inlined.executeAndSpecialize(TpSlotVarargsFactory.java:2220)
at org.graalvm.py/com.oracle.graal.python.builtins.objects.type.slots.TpSlotVarargsFactory$CallSlotTpCallNodeGen$Inlined.execute(TpSlotVarargsFactory.java:2179)
at org.graalvm.py/com.oracle.graal.python.nodes.call.CallNode.doGeneric(CallNode.java:217)
at org.graalvm.py/com.oracle.graal.python.nodes.call.CallNodeGen.executeAndSpecialize(CallNodeGen.java:333)
at org.graalvm.py/com.oracle.graal.python.nodes.call.CallNodeGen.executeInternal(CallNodeGen.java:249)
at org.graalvm.py/com.oracle.graal.python.nodes.call.CallNode.execute(CallNode.java:128)
at org.graalvm.py/com.oracle.graal.python.builtins.modules.csv.CSVModuleBuiltins$CSVReaderNode.createReader(CSVModuleBuiltins.java:241)
at org.graalvm.py/com.oracle.graal.python.builtins.modules.csv.CSVModuleBuiltinsFactory$CSVReaderNodeFactory$CSVReaderNodeGen.executeAndSpecialize(CSVModuleBuiltinsFactory.java:907)
at org.graalvm.py/com.oracle.graal.python.builtins.modules.csv.CSVModuleBuiltinsFactory$CSVReaderNodeFactory$CSVReaderNodeGen.execute(CSVModuleBuiltinsFactory.java:889)
at org.graalvm.py/com.oracle.graal.python.nodes.function.builtins.BuiltinCallNode$BuiltinAnyCallNode.execute(BuiltinCallNode.java:64)
at org.graalvm.py/com.oracle.graal.python.nodes.function.BuiltinFunctionRootNode.execute(BuiltinFunctionRootNode.java:337)
[...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#1112 ·
-
bug
Difficulty 3/5 1-2 days Newbie friendliness 68/100
oracle/graalpython#1111 ·
All issues in oracle/graalpython
Similar issues
-
bug confirmed issue
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
open-webui/open-webui#30750 · 1 comment ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
OpenwaterHealth/openmotion-bloodflow-app#604 · 1 comment ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
-
good first issue
Difficulty 1/5 Under an hour Newbie friendliness 90/100