Skip to content

The new stacktrace printing is missing "repeated N times" info for some StackOverflows #37587

@NHDaly

Description

@NHDaly

On 1.5:

julia> versioninfo()
Julia Version 1.5.1
Commit 697e782ab8 (2020-08-25 20:08 UTC)
Platform Info:
  OS: macOS (x86_64-apple-darwin19.6.0)
  CPU: Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-9.0.1 (ORCJIT, skylake)

julia> foo() = foo()
foo (generic function with 1 method)

julia> foo()
ERROR: StackOverflowError:
Stacktrace:
 [1] foo() at ./REPL[2]:1 (repeats 79984 times)

On master:

julia> versioninfo()
Julia Version 1.6.0-DEV.816
Commit 21ff6ee256 (2020-09-02 04:52 UTC)
Platform Info:
  OS: macOS (x86_64-apple-darwin19.6.0)
  CPU: Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-9.0.1 (ORCJIT, skylake)

julia> foo() = foo()
foo (generic function with 1 method)

julia> foo()
ERROR:
StackOverflowError:
Stacktrace:
 [1] foo()
   @ Main ./REPL[4]:1

With a real, more interesting stack, this makes it difficult to tell where the cycle is occurring!

Note that it does sometimes work, as shown in this example:

julia> versioninfo()
Julia Version 1.6.0-DEV.816
Commit 21ff6ee256 (2020-09-02 04:52 UTC)
Platform Info:
  OS: macOS (x86_64-apple-darwin19.6.0)
  CPU: Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-9.0.1 (ORCJIT, skylake)

julia> foo() = bar()
foo (generic function with 1 method)

julia> bar() = foo()
bar (generic function with 1 method)

julia> foo()
ERROR: StackOverflowError:
Stacktrace:
     [1] foo()
       @ Main ./REPL[1]:1
     [2] bar()
       @ Main ./REPL[2]:1--- the last 2 lines are repeated 13329 more times ---

😮 And i tried pulling a later master and re-building to see if the problem is still there before filing an issue, but now it's segfaulting! 😮

julia> versioninfo()
Julia Version 1.6.0-DEV.917
Commit a0a68a54d6 (2020-09-14 20:06 UTC)
Platform Info:
  OS: macOS (x86_64-apple-darwin19.6.0)
  CPU: Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-9.0.1 (ORCJIT, skylake)

julia> foo() = foo()
foo (generic function with 1 method)

julia> foo()
[1]    88563 segmentation fault  ~/builds/julia-1.6/julia

When I ran inside LLDB it somehow didn't segfault, and indeed still suffers from the under-reporting of the repeated frames:

(lldb) r
Process 89582 launched: '/Users/nathandaly/builds/julia-1.6/julia' (x86_64)
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.6.0-DEV.917 (2020-09-14)
 _/ |\__'_|_|_|\__'_|  |  Commit a0a68a54d6 (0 days old master)
|__/                   |

julia> foo() = foo()
foo (generic function with 1 method)

julia> foo()
ERROR: StackOverflowError:
Stacktrace:
 [1] foo()
   @ Main ./REPL[1]:1

julia> versioninfo()
Julia Version 1.6.0-DEV.917
Commit a0a68a54d6 (2020-09-14 20:06 UTC)
Platform Info:
  OS: macOS (x86_64-apple-darwin19.6.0)
  CPU: Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-9.0.1 (ORCJIT, skylake)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugIndicates an unexpected problem or unintended behaviorerror messagesBetter, more actionable error messagesregressionRegression in behavior compared to a previous version

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions