Skip to content

Language Server can crash due to bad Base override #388

@topolarity

Description

@topolarity
function Base.getproperty(NotType, x::Symbol)
    return "Dummy string"
end

I had meant to write Base.getproperty(::NotType, x::Symbol) but mis-typed.

Unfortunately the server does not operate in isolation, so the result is:

2025-12-13 13:30:51.801 [error] Stopping server failed
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
2025-12-13 13:30:51.801 [error] Stopping server failed
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
2025-12-13 13:30:51.801 [error] Stopping server failed
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
2025-12-13 13:30:51.802 [info] [JETLS-stderr] error in running finalizer: Core.MethodError(f=Base.close, args=("Dummy string",), world=0x0000000000009ee0)
2025-12-13 13:30:51.802 [info] [JETLS-stderr] jl_method_error_bare at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/gf.c:3039
2025-12-13 13:30:51.802 [info] [JETLS-stderr] jl_method_error at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/gf.c:3057
2025-12-13 13:30:51.802 [info] [JETLS-stderr] jl_f_throw_methoderror at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/builtins.c:608 [inlined]
2025-12-13 13:30:51.802 [info] [JETLS-stderr] jl_f_throw_methoderror at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/builtins.c:604
2025-12-13 13:30:51.802 [info] [JETLS-stderr] close at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/usr/share/julia/stdlib/v1.12/FileWatching/src/pidfile.jl:350
2025-12-13 13:30:51.802 [info] [JETLS-stderr] unknown function (ip: 0x79a0f9caa0a2) at (unknown file)
2025-12-13 13:30:51.802 [info] [JETLS-stderr] run_finalizer at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/gc-common.c:180
2025-12-13 13:30:51.802 [info] [JETLS-stderr] jl_gc_run_finalizers_in_list at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/gc-common.c:270
2025-12-13 13:30:51.802 [info] [JETLS-stderr] run_finalizers at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/gc-common.c:316
2025-12-13 13:30:51.802 [info] [JETLS-stderr] ijl_atexit_hook at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/init.c:292
2025-12-13 13:30:51.802 [info] [JETLS-stderr] ijl_exit at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/init.c:196
2025-12-13 13:30:51.802 [info] [JETLS-stderr] ijl_no_exc_handler at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/task.c:737
2025-12-13 13:30:51.802 [info] [JETLS-stderr] jl_finish_task at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/task.c:348
2025-12-13 13:30:51.802 [info] [JETLS-stderr] start_task at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/task.c:1260
2025-12-13 13:30:51.802 [info] [JETLS-stderr] fatal: error thrown and no exception handler available.
2025-12-13 13:30:51.802 [info] [JETLS-stderr] MethodError(
2025-12-13 13:30:51.802 [info] [JETLS-stderr] f=Base.lock, args=("Dummy string",), world=0x0000000000009ee0)
2025-12-13 13:30:51.802 [info] [JETLS-stderr] jl_method_error_bare at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/gf.c:3039
2025-12-13 13:30:51.802 [info] [JETLS-stderr] jl_method_error at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/gf.c:3057
2025-12-13 13:30:51.802 [info] [JETLS-stderr] jl_f_throw_methoderror at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/builtins.c:608 [inlined]
2025-12-13 13:30:51.802 [info] [JETLS-stderr] jl_f_throw_methoderror at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/builtins.c:604
2025-12-13 13:30:51.802 [info] [JETLS-stderr] lock at ./condition.jl:75
2025-12-13 13:30:51.802 [info] [JETLS-stderr] _uv_hook_close at ./asyncevent.jl:260
2025-12-13 13:30:51.802 [info] [JETLS-stderr] unknown function (ip: 0x79a0f9caa132) at (unknown file)
2025-12-13 13:30:51.803 [info] [JETLS-stderr] jl_apply at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/julia.h:2391 [inlined]
2025-12-13 13:30:51.803 [info] [JETLS-stderr] jl_uv_call_close_callback at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/jl_uv.c:168
2025-12-13 13:30:51.803 [info] [JETLS-stderr] jl_uv_closeHandle at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/jl_uv.c:188 [inlined]
2025-12-13 13:30:51.803 [info] [JETLS-stderr] jl_uv_closeHandle at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/jl_uv.c:172
2025-12-13 13:30:51.804 [info] [JETLS-stderr] uv__finish_close at /workspace/srcdir/libuv/src/unix/core.c:342
2025-12-13 13:30:51.804 [info] [JETLS-stderr] uv__run_closing_handles at /workspace/srcdir/libuv/src/unix/core.c:356
2025-12-13 13:30:51.804 [info] [JETLS-stderr] uv_run at /workspace/srcdir/libuv/src/unix/core.c:445
2025-12-13 13:30:51.804 [info] [JETLS-stderr] ijl_atexit_hook at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/init.c:329
2025-12-13 13:30:51.804 [info] [JETLS-stderr] ijl_exit at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/init.c:196
2025-12-13 13:30:51.804 [info] [JETLS-stderr] ijl_no_exc_handler at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/task.c:737
2025-12-13 13:30:51.804 [info] [JETLS-stderr] jl_finish_task at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/task.c:348
2025-12-13 13:30:51.804 [info] [JETLS-stderr] start_task at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/task.c:1260
2025-12-13 13:30:51.805 [info] [JETLS-stderr] 
2025-12-13 13:30:51.805 [info] [JETLS-stderr] atexit hook threw an error: TypeError(
2025-12-13 13:30:51.805 [info] [JETLS-stderr] func=:typeassert, context="", expected=Bool, got="Dummy string")
2025-12-13 13:30:51.805 [info] [JETLS-stderr] ijl_type_error_rt at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/rtutils.c:121
2025-12-13 13:30:51.805 [info] [JETLS-stderr] ijl_type_error at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/rtutils.c:139
2025-12-13 13:30:51.805 [info] [JETLS-stderr] _trylock at ./lock.jl:176
2025-12-13 13:30:51.805 [info] [JETLS-stderr] trylock at ./lock.jl:171 [inlined]
2025-12-13 13:30:51.805 [info] [JETLS-stderr] lock at ./lock.jl:195 [inlined]
2025-12-13 13:30:51.805 [info] [JETLS-stderr] macro expansion at ./lock.jl:374 [inlined]
2025-12-13 13:30:51.805 [info] [JETLS-stderr] _atexit at ./initdefs.jl:447
2025-12-13 13:30:51.805 [info] [JETLS-stderr] unknown function (ip: 0x79a0f9ca9994) at (unknown file)
2025-12-13 13:30:51.805 [info] [JETLS-stderr] jl_apply at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/julia.h:2391 [inlined]
2025-12-13 13:30:51.805 [info] [JETLS-stderr] ijl_atexit_hook at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/init.c:260
2025-12-13 13:30:51.805 [info] [JETLS-stderr] ijl_exit at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/init.c:196
2025-12-13 13:30:51.805 [info] [JETLS-stderr] ijl_no_exc_handler at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/task.c:737
2025-12-13 13:30:51.805 [info] [JETLS-stderr] throw_internal at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/task.c:775
2025-12-13 13:30:51.805 [info] [JETLS-stderr] ijl_throw at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/task.c:794
2025-12-13 13:30:51.805 [info] [JETLS-stderr] jl_method_error_bare at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/gf.c:3039
2025-12-13 13:30:51.805 [info] [JETLS-stderr] jl_method_error at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/gf.c:3057
2025-12-13 13:30:51.805 [info] [JETLS-stderr] jl_f_throw_methoderror at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/builtins.c:608 [inlined]
2025-12-13 13:30:51.805 [info] [JETLS-stderr] jl_f_throw_methoderror at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/builtins.c:604
2025-12-13 13:30:51.805 [info] [JETLS-stderr] lock at ./condition.jl:75
2025-12-13 13:30:51.805 [info] [JETLS-stderr] _uv_hook_close at ./asyncevent.jl:260
2025-12-13 13:30:51.805 [info] [JETLS-stderr] unknown function (ip: 0x79a0f9caa132) at (unknown file)
2025-12-13 13:30:51.805 [info] [JETLS-stderr] jl_apply at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/julia.h:2391 [inlined]
2025-12-13 13:30:51.805 [info] [JETLS-stderr] jl_uv_call_close_callback at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/jl_uv.c:168
2025-12-13 13:30:51.805 [info] [JETLS-stderr] jl_uv_closeHandle at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/jl_uv.c:188 [inlined]
2025-12-13 13:30:51.805 [info] [JETLS-stderr] jl_uv_closeHandle at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/jl_uv.c:172
2025-12-13 13:30:51.805 [info] [JETLS-stderr] uv__finish_close at /workspace/srcdir/libuv/src/unix/core.c:342
2025-12-13 13:30:51.805 [info] [JETLS-stderr] uv__run_closing_handles at /workspace/srcdir/libuv/src/unix/core.c:356
2025-12-13 13:30:51.805 [info] [JETLS-stderr] uv_run at /workspace/srcdir/libuv/src/unix/core.c:445
2025-12-13 13:30:51.805 [info] [JETLS-stderr] ijl_atexit_hook at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/init.c:329
2025-12-13 13:30:51.805 [info] [JETLS-stderr] ijl_exit at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/init.c:196
2025-12-13 13:30:51.805 [info] [JETLS-stderr] ijl_no_exc_handler at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/task.c:737
2025-12-13 13:30:51.805 [info] [JETLS-stderr] jl_finish_task at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/task.c:348
2025-12-13 13:30:51.805 [info] [JETLS-stderr] start_task at /cache/build/builder-amdci5-2/julialang/julia-release-1-dot-12/src/task.c:1260
2025-12-13 13:30:51.806 [info] [JETLS-stderr] 
2025-12-13 13:30:51.806 [info] [JETLS-stderr] [15421] signal 11 (1): Segmentation fault
2025-12-13 13:30:51.806 [info] [JETLS-stderr] in expression starting at none:0
2025-12-13 13:30:51.817 [info] [JETLS-stderr] _ZNK4llvm3EVT16isExtendedVectorEv at /home/topolarity/.julia/juliaup/julia-1.12.2+0.x64.linux.gnu/bin/../lib/julia/libLLVM.so.18.1jl (unknown line)
2025-12-13 13:30:51.817 [info] [JETLS-stderr] _ZNK4llvm18TargetLoweringBase17getTypeConversionERNS_11LLVMContextENS_3EVTE at /home/topolarity/.julia/juliaup/julia-1.12.2+0.x64.linux.gnu/bin/../lib/julia/libLLVM.so.18.1jl (unknown line)
2025-12-13 13:30:51.908 [info] [jetls-client] JETLS process exited with code: 1

Perhaps fixable if the server is able to operate in a fixed world?

The other big problem is that (if I understand correctly), the Base.getproperty evaluation "actually happens" and then cannot be easily undone, except by relying on Revise to remove the Method, hopefully in a way that restores the pre-definition MethodTable state.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions