Skip to content

Conversation

bartgol
Copy link
Contributor

@bartgol bartgol commented Sep 2, 2025

It apparently does not pick it up automatically

Motivation

I enabled the stacktrace to check where my code was failing without firing up gdb, but it was printing function pointers rather than source code lines. I am not sure if this is due to changes in boost since 1.65 (I am using 1.81) or if I was just getting lucky before. Either way, adding this CPP macro seems to fix things.

stacktrace before this PR:

   0# 0x0000000000509997 in ./yaml_parser
   1# 0x000000000040CB49 in ./yaml_parser
   2# 0x000000000043B76A in ./yaml_parser
   3# 0x000000000043AADD in ./yaml_parser
   4# 0x000000000043585D in ./yaml_parser
   5# 0x00000000004355E1 in ./yaml_parser
   6# 0x00000000004342A6 in ./yaml_parser
   7# 0x0000000000436F36 in ./yaml_parser
   8# 0x0000000000438143 in ./yaml_parser
   9# 0x0000000000437E95 in ./yaml_parser
  10# 0x000000000044D3A2 in ./yaml_parser
  11# 0x00007F3954E295D0 in /usr/lib64/libc.so.6
  12# __libc_start_main in /usr/lib64/libc.so.6
  13# 0x000000000040C575 in ./yaml_parser

stacktrace after this PR:

   0# boost::stacktrace::basic_stacktrace<std::allocator<boost::stacktrace::
  frame> >::basic_stacktrace() at /projects/sems/install/rhel9-x86_64/sems/tpl/
  gcc/13.2.0/boost/1.84.0/6ipfnbu/include/boost/stacktrace/stacktrace.hpp:129
   1# (anonymous namespace)::C_A_T_C_H_T_E_S_T_0() at /home/lbertag/workdir/
  libs/ekat/ekat-src/master/tests/parser/yaml_parser.cpp:55 (discriminator 4)
   2# Catch::TestInvokerAsFunction::invoke() const at /home/lbertag/workdir/
  libs/ekat/ekat-src/master/extern/Catch2/single_include/catch2/catch.hpp:14329
   3# Catch::TestCase::invoke() const at /home/lbertag/workdir/libs/ekat/ekat-
  src/master/extern/Catch2/single_include/catch2/catch.hpp:14168
   4# Catch::RunContext::invokeActiveTestCase() at /home/lbertag/workdir/libs/
  ekat/ekat-src/master/extern/Catch2/single_include/catch2/catch.hpp:13028
   5# Catch::RunContext::runCurrentTest(std::__cxx11::basic_string<char, std::
  char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char,
  std::char_traits<char>, std::allocator<char> >&) at /home/lbertag/workdir/
  libs/ekat/ekat-src/master/extern/Catch2/single_include/catch2/catch.hpp:13002
   6# Catch::RunContext::runTest(Catch::TestCase const&) at /home/lbertag/
  workdir/libs/ekat/ekat-src/master/extern/Catch2/single_include/catch2/catch.
  hpp:12762
   7# Catch::(anonymous namespace)::TestGroup::execute() at /home/lbertag/
  workdir/libs/ekat/ekat-src/master/extern/Catch2/single_include/catch2/catch.
  hpp:13354 (discriminator 2)
   8# Catch::Session::runInternal() at /home/lbertag/workdir/libs/ekat/ekat-
  src/master/extern/Catch2/single_include/catch2/catch.hpp:13562
   9# Catch::Session::run() at /home/lbertag/workdir/libs/ekat/ekat-src/master/
  extern/Catch2/single_include/catch2/catch.hpp:13516 (discriminator 1)
  10# main at /home/lbertag/workdir/libs/ekat/ekat-src/master/src/testing-
  support/ekat_catch_main.cpp:86 (discriminator 1)
  11# 0x00007FF554A295D0 in /usr/lib64/libc.so.6
  12# __libc_start_main in /usr/lib64/libc.so.6
  13# _start in ./yaml_parser

Edit: after last commit:

FAILED CONDITION: 'valid_nested_list_format(str)'

BACKTRACE:
 0# boost::stacktrace::basic_stacktrace<std::allocator<boost::stacktrace::frame> >::basic_stacktrace() at /projects/sems/install/rhel9-x86_64/sems/tpl/gcc/13.2.0/boost/1.84.0/6ipfnbu/include/boost/stacktrace/stacktrace.hpp:129
 1# (anonymous namespace)::C_A_T_C_H_T_E_S_T_0() at /home/lbertag/workdir/libs/ekat/ekat-src/master/tests/parser/yaml_parser.cpp:54 (discriminator 4)
 2# Catch::TestInvokerAsFunction::invoke() const at /home/lbertag/workdir/libs/ekat/ekat-src/master/extern/Catch2/single_include/catch2/catch.hpp:14329
 3# Catch::TestCase::invoke() const at /home/lbertag/workdir/libs/ekat/ekat-src/master/extern/Catch2/single_include/catch2/catch.hpp:14168
 4# Catch::RunContext::invokeActiveTestCase() at /home/lbertag/workdir/libs/ekat/ekat-src/master/extern/Catch2/single_include/catch2/catch.hpp:13028
 5# Catch::RunContext::runCurrentTest(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) at /home/lbertag/workdir/libs/ekat/ekat-src/master/extern/Catch2/single_include/catch2/catch.hpp:13002
 6# Catch::RunContext::runTest(Catch::TestCase const&) at /home/lbertag/workdir/libs/ekat/ekat-src/master/extern/Catch2/single_include/catch2/catch.hpp:12762
 7# Catch::(anonymous namespace)::TestGroup::execute() at /home/lbertag/workdir/libs/ekat/ekat-src/master/extern/Catch2/single_include/catch2/catch.hpp:13354 (discriminator 2)
 8# Catch::Session::runInternal() at /home/lbertag/workdir/libs/ekat/ekat-src/master/extern/Catch2/single_include/catch2/catch.hpp:13562
 9# Catch::Session::run() at /home/lbertag/workdir/libs/ekat/ekat-src/master/extern/Catch2/single_include/catch2/catch.hpp:13516 (discriminator 1)
10# main at /home/lbertag/workdir/libs/ekat/ekat-src/master/src/testing-support/ekat_catch_main.cpp:86 (discriminator 1)
11# 0x00007F0849E295D0 in /usr/lib64/libc.so.6
12# __libc_start_main in /usr/lib64/libc.so.6
13# _start in ./yaml_parser

It apparently does not pick it up automatically
@bartgol bartgol requested a review from tcclevenger September 2, 2025 19:43
@bartgol bartgol self-assigned this Sep 2, 2025
tcclevenger
tcclevenger previously approved these changes Sep 2, 2025
Prints the bactrace without line truncation
@bartgol bartgol merged commit f02ab6b into master Sep 3, 2025
4 checks passed
@bartgol bartgol deleted the bartgol/stacktrace-fix branch September 3, 2025 15:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants