Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stack overflow when parsing 20k consecutive + signs #415

Closed
PallHaraldsson opened this issue Feb 12, 2024 · 1 comment
Closed

Stack overflow when parsing 20k consecutive + signs #415

PallHaraldsson opened this issue Feb 12, 2024 · 1 comment

Comments

@PallHaraldsson
Copy link

PallHaraldsson commented Feb 12, 2024

I accidentally left the headphone on the keyboard on the + button.

I just pressed enter and Julia hung for a while, at 100% and mem. use seemingly growing. It's not a big deal since it recovered (might not for others, and OOM?), I'm just thinking if something can be imrpvoed.

┌ Error: JuliaSyntax parser failed — falling back to flisp!
│ This is not your fault. Please submit a bug report to https://github.com/JuliaLang/JuliaSyntax.jl/issues
│   exception =
│    StackOverflowError:
│    Stacktrace:
│      [1] _internal_node_to_Expr(source::Base.JuliaSyntax.SourceFile, srcrange::UnitRange{Int64}, head::Base.JuliaSyntax.SyntaxHead, childranges::Vector{UnitRange{Int64}}, childheads::Vector{Base.JuliaSyntax.SyntaxHead}, args::Vector{Any})
│        @ Base.JuliaSyntax /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/base/JuliaSyntax/src/expr.jl:451
│      [2] _to_expr(node::Base.JuliaSyntax.SyntaxNode)
│        @ Base.JuliaSyntax /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/base/JuliaSyntax/src/expr.jl:503
│      [3] _to_expr(node::Base.JuliaSyntax.SyntaxNode) (repeats 8109 times)
│        @ Base.JuliaSyntax /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/base/JuliaSyntax/src/expr.jl:502
│      [4] Expr(node::Base.JuliaSyntax.SyntaxNode)
│        @ Base.JuliaSyntax /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/base/JuliaSyntax/src/expr.jl:507
│      [5] core_parser_hook(code::String, filename::String, lineno::Int64, offset::Int64, options::Symbol)
│        @ Base.JuliaSyntax /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/base/JuliaSyntax/src/hooks.jl:211
│      [6] invoke_in_world(::UInt64, ::Any, ::Any, ::Vararg{Any}; kwargs::@Kwargs{})
│        @ Base ./essentials.jl:921
│      [7] invoke_in_world(::UInt64, ::Any, ::Any, ::Vararg{Any})
│        @ Base ./essentials.jl:918
│      [8] (::Base.JuliaSyntax.var"#invoke_fixedworld#120"{Base.JuliaSyntax.var"#invoke_fixedworld#117#121"{typeof(Base.JuliaSyntax.core_parser_hook), UInt64}})(::String, ::Vararg{Any}; kws::@Kwargs{})
│        @ Base.JuliaSyntax /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/base/JuliaSyntax/src/hooks.jl:118
│      [9] (::Base.JuliaSyntax.var"#invoke_fixedworld#120"{Base.JuliaSyntax.var"#invoke_fixedworld#117#121"{typeof(Base.JuliaSyntax.core_parser_hook), UInt64}})(::String, ::Vararg{Any})
│        @ Base.JuliaSyntax /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/base/JuliaSyntax/src/hooks.jl:117
│     [10] _parse_string(text::String, filename::String, lineno::Int64, index::Int64, options::Symbol)
│        @ Base.Meta ./meta.jl:200
│     [11] #parseall#6
│        @ Base.Meta ./meta.jl:294 [inlined]
│     [12] parseall
│        @ Base.Meta ./meta.jl:293 [inlined]
│     [13] _parse_input_line_core
│        @ Base ./client.jl:174 [inlined]
│     [14] #parse_input_line#1008
│        @ Base ./client.jl:192 [inlined]
│     [15] parse_input_line
│        @ Base ./client.jl:189 [inlined]
│     [16] (::REPL.var"#93#103"{REPL.LineEditREPL, REPL.REPLHistoryProvider})(x::Any)
│        @ REPL ~/.julia/juliaup/julia-1.10.0+0.x64.linux.gnu/share/julia/stdlib/v1.10/REPL/src/REPL.jl:1079
│     [17] #invokelatest#2
│        @ Base ./essentials.jl:887 [inlined]
│     [18] invokelatest
│        @ Base ./essentials.jl:884 [inlined]
│     [19] (::REPL.var"#do_respond#80"{Bool, Bool, REPL.var"#93#103"{REPL.LineEditREPL, REPL.REPLHistoryProvider}, REPL.LineEditREPL, REPL.LineEdit.Prompt})(s::REPL.LineEdit.MIState, buf::Any, ok::Bool)
│        @ REPL ~/.julia/juliaup/julia-1.10.0+0.x64.linux.gnu/share/julia/stdlib/v1.10/REPL/src/REPL.jl:905
│     [20] #invokelatest#2
│        @ Base ./essentials.jl:887 [inlined]
│     [21] invokelatest
│        @ Base ./essentials.jl:884 [inlined]
│     [22] run_interface(terminal::REPL.Terminals.TextTerminal, m::REPL.LineEdit.ModalInterface, s::REPL.LineEdit.MIState)
│        @ REPL.LineEdit ~/.julia/juliaup/julia-1.10.0+0.x64.linux.gnu/share/julia/stdlib/v1.10/REPL/src/LineEdit.jl:2656
│     [23] run_frontend(repl::REPL.LineEditREPL, backend::REPL.REPLBackendRef)
│        @ REPL ~/.julia/juliaup/julia-1.10.0+0.x64.linux.gnu/share/julia/stdlib/v1.10/REPL/src/REPL.jl:1312
│     [24] (::REPL.var"#62#68"{REPL.LineEditREPL, REPL.REPLBackendRef})()
│        @ REPL ~/.julia/juliaup/julia-1.10.0+0.x64.linux.gnu/share/julia/stdlib/v1.10/REPL/src/REPL.jl:386
│   offset = 0
│   code = "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" ⋯ 20924 bytes ⋯ "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
└ @ Base.JuliaSyntax /cache/build/builder-amdci4-6/julialang/julia-release-1-dot-10/base/JuliaSyntax/src/hooks.jl:260
ERROR: syntax: "++" is not a unary operator
Stacktrace:
 [1] top-level scope
   @ none:1
@LilithHafner LilithHafner changed the title Parsing not scalable Stack overflow when parsing 20k consecutive + signs Feb 17, 2024
@c42f
Copy link
Member

c42f commented Mar 16, 2024

Yea :-(

Duplicate of #368

@c42f c42f closed this as completed Mar 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants