Skip to content

Check for crashes when killing processes #244

@maleadt

Description

@maleadt

When killing due to large output, it's possible the output is just:

GC error (probable corruption)
Allocations: 22893206 (Pool: 22892733; Big: 473); GC: 17
<?#0x7f1b5d124960::(nil)>

thread 0 ptr queue:
~~~~~~~~~~ ptr queue top ~~~~~~~~~~
Memory{Base.StackTraces.StackFrame}(1, 0x7f1b304fc020)[Base.StackTraces.StackFrame(func=#<null>, file=#<null>, line=0, linfo=#<null>, from_c=false, inlined=false, pointer=0x0000000000000000)]
==========
Base.Dict{Base.StackTraces.StackFrame, Profile.StackFrameTree{Base.StackTraces.StackFrame}}(slots=Memory{UInt8}(16, 0x7f1b356d5c40)[0x00, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], keys=Memory{Base.StackTraces.StackFrame}(16, 0x7f1b32581340)[Base.StackTraces.StackFrame(func=#<null>, file=#<null>, line=0, linfo=#<null>, from_c=false, inlined=false, pointer=0x0000000000000000), Base.StackTraces.StackFrame(func=#<null>, file=#<null>, line=0, linfo=#<null>, from_c=false, inlined=false, pointer=0x0000000000000000), Base.StackTraces.StackFrame(func=#<null>, file=#<null>, line=0, linfo=#<null>, from_c=false, inlined=false, pointer=0x0000000000000000), Base.StackTraces.StackFrame(func=#<null>, file=#<null>, line=0, linfo=#<null>, from_c=false, inlined=false, pointer=0x0000000000000000), Base.StackTraces.StackFrame(func=:abstract_call_known, file=Symbol("./compiler/abstractinterpretation.jl"), line=2168, linfo=abstract_call_known(Core.Compiler.NativeInterpreter, Any, Core.Compiler.ArgInfo, Core.Compiler.StmtInfo, Core.Compiler.InferenceState, Int64) from abstract_call_known(Core.Compiler.AbstractInterpreter, Any, Core.Compiler.ArgInfo, Core.Compiler.StmtInfo, Union{Core.Compiler.IRInterpretationState, Core.Compiler.InferenceState}, Int64), from_c=false, inlined=false, pointer=0x00007f1b53bdff4f), Base.StackTraces.StackFrame(func=#<null>, file=#<null>, line=0, linfo=#<null>, from_c=false, inlined=false, pointer=0x0000000000000000), Base.StackTraces.StackFrame(func=#<null>, file=#<null>, line=0, linfo=#<null>, from_c=false, inlined=false, pointer=0x0000000000000000), Base.StackTraces.StackFrame(func=#<null>, file=#<null>, line=0, linfo=#<null>, from_c=false, inlined=false, pointer=0x0000000000000000), Base.StackTraces.StackFrame(func=#<null>, file=#<null>, line=0, linfo=#<null>, from_c=false, inlined=false, pointer=0x0000000000000000), Base.StackTraces.StackFrame(func=#<null>, file=#<null>, line=0, linfo=#<null>, from_c=false, inlined=false, pointer=0x0000000000000000), Base.StackTraces.StackFrame(func=#<null>, file=#<null>, line=0, linfo=#<null>, from_c=false, inlined=false, pointer=0x0000000000000000), Base.StackTraces.StackFrame(func=#<null>, file=#<null>, line=0, linfo=#<null>, from_c=false, inlined=false, pointer=0x0000000000000000), Base.StackTraces.StackFrame(func=#<null>, file=#<null>, line=0, linfo=#<null>, from_c=false, inlined=false, pointer=0x0000000000000000), Base.StackTraces.StackFrame(func=#<null>, file=#<null>, line=0, linfo=#<null>, from_c=false, inlined=false, pointer=0x0000000000000000), Base.StackTraces.StackFrame(func=#<null>, file=#<null>, line=0, linfo=#<null>, from_c=false, inlined=false, pointer=0x0000000000000000), Base.StackTraces.StackFrame(func=#<null>, file=#<null>, line=0, linfo=#<null>, from_c=false, inlined=false, pointer=0x0000000000000000)], vals=Memory{Profile.StackFrameTree{Base.StackTraces.StackFrame}}(16, 0x7f1b32584d40)[
...

i.e. we should have classified this as a GC corruption crash.

Similarly, it's possible that the process hangs after an internal error.

However, we need to take care that we don't introduce internal errors after interrupting the process...

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