Cataclysm-dda: Segfault and backtrace in unit tests.

Created on 13 Apr 2019  路  2Comments  路  Source: CleverRaven/Cataclysm-DDA

Crash on running unit tests, just dropping off the backtrace.

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff6e27450 in __memcmp_avx2_movbe () from /lib64/libc.so.6
Missing separate debuginfos, use: debuginfo-install libgcc-7.3.1-5.amzn2.0.2.x86_64 libstdc++-7.3.1-5.amzn2.0.2.x86_64 ncurses-libs-6.0-8.20170212.amzn2.1.2.x86_64
(gdb) bt
#0  0x00007ffff6e27450 in __memcmp_avx2_movbe () from /lib64/libc.so.6
#1  0x00007ffff7714efa in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::compare(char const*) const () from /lib64/libstdc++.so.6
#2  0x0000000000799430 in std::operator==<char, std::char_traits<char>, std::allocator<char> > (__lhs=..., __rhs=__rhs@entry=0xea8668 "both") at /usr/include/c++/7/bits/basic_string.h:6033
#3  0x000000000092dabb in game::<lambda(const tripoint&)>::operator() (__closure=0x13d1e50 <game::place_player(tripoint const&)::forage>, pos=...) at src/game.cpp:10587
#4  game::place_player (this=0x158f8b0, dest_loc=...) at src/game.cpp:10608
#5  0x000000000079c634 in ____C_A_T_C_H____T_E_S_T____21 () at npc_test.cpp:425
#6  0x0000000000804f27 in Catch::RunContext::invokeActiveTestCase (this=this@entry=0x7fffffffdf58) at catch/catch.hpp:10029
#7  0x00000000008129a2 in Catch::RunContext::runCurrentTest (this=this@entry=0x7fffffffdf58, redirectedCout="", redirectedCerr="") at catch/catch.hpp:10003
#8  0x00000000008189f1 in Catch::RunContext::runTest (this=this@entry=0x7fffffffdf58, testCase=...) at catch/catch.hpp:9779
#9  0x0000000000818e63 in Catch::(anonymous namespace)::runTests (config=std::shared_ptr (count 4, weak 0) 0x156bde0) at catch/catch.hpp:10326
#10 0x0000000000819c98 in Catch::Session::runInternal (this=this@entry=0x7fffffffe320) at catch/catch.hpp:10519
#11 0x0000000000819d42 in Catch::Session::run (this=this@entry=0x7fffffffe320) at catch/catch.hpp:10476
#12 0x00000000006c84d2 in main (argc=<optimized out>, argv=0x7fffffffe588) at test_main.cpp:279
(gdb) f 4
#4  game::place_player (this=0x158f8b0, dest_loc=...) at src/game.cpp:10608
10608                   forage( u.pos() + direction_XY( elem ) );
(gdb) p u.pos()
$1 = (const tripoint &) @0x15ec830: {x = 70, y = 70, z = 0}
(gdb) f 3
#3  0x000000000092dabb in game::<lambda(const tripoint&)>::operator() (__closure=0x13d1e50 <game::place_player(tripoint const&)::forage>, pos=...) at src/game.cpp:10587
10587                   const bool forage_everything = forage_type == "both";
(gdb) p forage_type
$2 = <error: Cannot access memory at address 0x3c>
(gdb) q
A debugging session is active.

        Inferior 1 [process 9798] will be killed.

Quit anyway? (y or n) y
<Bug> <Crash / Freeze> Tests

Most helpful comment

Looks like a dupe of #29484

All 2 comments

Looks like a dupe of #29484

Yep, good catch @ifreund ! The end of the stack trace is an exact dup of #29484.

  • game::place_player
  • lambda in that function
  • std::operator== with the string both
  • std::string::compare()
  • memcmp()
Was this page helpful?
0 / 5 - 0 ratings