Skip to content

Stack overflow when parsing 20k consecutive + signs #415

@PallHaraldsson

Description

@PallHaraldsson

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions