Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extremely random crashes caused by unknown error #150

Closed
SgtTheDarknezz opened this issue Nov 5, 2016 · 27 comments
Closed

Extremely random crashes caused by unknown error #150

SgtTheDarknezz opened this issue Nov 5, 2016 · 27 comments

Comments

@SgtTheDarknezz
Copy link

SgtTheDarknezz commented Nov 5, 2016

[22:18:55] [debug] Server crashed due to an unknown error
[22:18:55] [debug] Native backtrace:
[22:18:55] [debug] #0 0058b55b in _ZN10StackTraceC2EPv () from plugins/crashdetect.so
[22:18:55] [debug] #1 005845df in _ZN11CrashDetect20PrintNativeBacktraceERSoPv () from plugins/crashdetect.so
[22:18:55] [debug] #2 005857a2 in _ZN11CrashDetect20PrintNativeBacktraceEPv () from plugins/crashdetect.so
[22:18:55] [debug] #3 00585bf6 in _ZN11CrashDetect11OnExceptionEPv () from plugins/crashdetect.so
[22:18:55] [debug] #4 0058b2fc in ?? () from plugins/crashdetect.so
[22:18:55] [debug] #5 00b02410 in ?? ()
[22:18:55] [debug] #6 005d5cde in ?? () from plugins/streamer.so
[22:18:55] [debug] #7 005d66ac in ?? () from plugins/streamer.so
[22:18:55] [debug] #8 0060d9f0 in ?? () from plugins/streamer.so
[22:18:55] [debug] #9 0060e1aa in ?? () from plugins/streamer.so
[22:18:55] [debug] #10 005e0525 in ProcessTick () from plugins/streamer.so
[22:18:55] [debug] #11 080d1ce2 in ?? () from samp03svr
[22:18:55] [debug] #12 080aef6c in ?? () from samp03svr
[22:18:55] [debug] #13 080aa13a in ?? () from samp03svr
[22:18:55] [debug] #14 00259d26 in __libc_start_main () from /lib/libc.so.6
[22:18:55] [debug] #15 0804b4e1 in ?? () from samp03svr

The last two ocelots of each memory address ALWAYS remain the same when our server crashes, we are unsure if its an issue with streamer, what do you think?

We've removed crashdetect to see if the issue would go away, to no avail, the issue still existed.

@Crayder
Copy link

Crayder commented Nov 5, 2016

No, streamer isn't causing this. Your script is.

@SgtTheDarknezz
Copy link
Author

I don't think you understand the slightest about debugging sir, with all due respect, if it were a script error, the issue would've been printed in the debug log, and I wouldn't be here writing this issue right now. So if you aren't the developer, please don't give your input.

@ghost
Copy link

ghost commented Nov 5, 2016

I believe this is a buffer overflow within the plugin, which is why it's been posted here. Our system has a map changing routine which destroys and recreates map objects on demand. Thus, one map is destroyed and another is recreated for the player. Crayder it would be a real honor too if you contributed only useful information to this issue. Good luck.

@SgtTheDarknezz
Copy link
Author

[11:55:23] [debug] Server crashed due to an unknown error
[11:55:25] [debug] Native backtrace:
[11:55:25] [debug] #0 005e055b in _ZN10StackTraceC2EPv () from plugins/crashdetect.so
[11:55:25] [debug] #1 005d95df in _ZN11CrashDetect20PrintNativeBacktraceERSoPv () from plugins/crashdetect.so
[11:55:25] [debug] #2 005da7a2 in _ZN11CrashDetect20PrintNativeBacktraceEPv () from plugins/crashdetect.so
[11:55:25] [debug] #3 005dabf6 in _ZN11CrashDetect11OnExceptionEPv () from plugins/crashdetect.so
[11:55:25] [debug] #4 005e02fc in ?? () from plugins/crashdetect.so
[11:55:25] [debug] #5 0081d410 in ?? ()
[11:55:25] [debug] #6 0081d430 in ?? ()
[11:55:25] [debug] #7 00193861 in gsignal () from /lib/libc.so.6
[11:55:25] [debug] #8 0019513a in abort () from /lib/libc.so.6
[11:55:25] [debug] #9 0018cb7b in ?? () from /lib/libc.so.6
[11:55:25] [debug] #10 0018cc36 in ?? () from /lib/libc.so.6
[11:55:25] [debug] #11 010d2bcf in _ZNK5boost13intrusive_ptrI4CellEptEv () from plugins/streamer.so
[11:55:25] [debug] #12 010d1733 in _ZN4Grid22processDiscoveredCellsER6PlayerRSt6vectorIN5boost13intrusive_ptrI4CellEESaIS6_EERKNS3_9unordered13unordered_setISt4pairIiiENS3_4hashISD_EESt8equal_toISD_ESaISD_EEE () from plugins/streamer.so
[11:55:25] [debug] #13 010d1a70 in _ZN4Grid12findAllCellsER6PlayerRSt6vectorIN5boost13intrusive_ptrI4CellEESaIS6_EE () from plugins/streamer.so
[11:55:25] [debug] #14 0112c755 in _ZN8Streamer19performPlayerUpdateER6Playerb () from plugins/streamer.so
[11:55:25] [debug] #15 0112be4b in _ZN8Streamer20startAutomaticUpdateEv () from plugins/streamer.so
[11:55:25] [debug] #16 010ee691 in ProcessTick () from plugins/streamer.so
[11:55:25] [debug] #17 080d1ce2 in ?? () from samp03svr
[11:55:25] [debug] #18 080aef6c in ?? () from samp03svr
[11:55:25] [debug] #19 080aa13a in ?? () from samp03svr
[11:55:25] [debug] #20 0017fd26 in __libc_start_main () from /lib/libc.so.6
[11:55:25] [debug] #21 0804b4e1 in ?? () from samp03svr

Compiled streamer in debug mode, and we got this.

@samp-incognito
Copy link
Owner

Could you run the server in GDB?

@SgtTheDarknezz
Copy link
Author

SgtTheDarknezz commented Nov 5, 2016

I got the candy you requested (:

backtrace:
#0 0x00abd113 in Grid::processDiscoveredCellsForPlayer(Player&, std::vectorboost::intrusive_ptr<Cell, std::allocatorboost::intrusive_ptr >&, boost::unordered::unordered_set<std::pair<int, int>, boost::hash<std::pair<int, int> >, std::equal_to<std::pair<int, int> >, std::allocator<std::pair<int, int> > > const&) () from plugins/streamer.so
No symbol table info available.
#1 0x00abe379 in Grid::findAllCellsForPlayer(Player&, std::vectorboost::intrusive_ptr<Cell, std::allocatorboost::intrusive_ptr >&) () from plugins/streamer.so
No symbol table info available.
#2 0x00affe6d in Streamer::performPlayerUpdate(Player&, bool) () from plugins/streamer.so
No symbol table info available.
#3 0x00b0088a in Streamer::startAutomaticUpdate() () from plugins/streamer.so
No symbol table info available.
#4 0x00ac9415 in ProcessTick () from plugins/streamer.so
No symbol table info available.
#5 0x080d1ce2 in ?? ()
No symbol table info available.
#6 0x080aef6c in ?? ()
No symbol table info available.
#7 0x080aa13a in ?? ()
No symbol table info available.
#8 0x0029ad26 in __libc_start_main () from /lib/libc.so.6
No symbol table info available.
#9 0x0804b4e1 in ?? ()
No symbol table info available.

registers:
eax 0x0 0
ecx 0x95ddec0 157146816
edx 0x95c8c90 157060240
ebx 0xb2071c 11667228
esp 0xffffd2c0 0xffffd2c0
ebp 0xffffd3a8 0xffffd3a8
esi 0x11 17
edi 0xffffd448 -11192
eip 0xabd113 0xabd113 <Grid::processDiscoveredCellsForPlayer(Player&, std::vector<boost::intrusive_ptr, std::allocatorboost::intrusive_ptr >&, boost::unordered::unordered_set<std::pair<int, int>, boost::hash<std::pair<int, int> >, std::equal_to<std::pair<int, int> >, std::allocator<std::pair<int, int> > > const&)+2451>
eflags 0x210206 [ PF IF RF ID ]
cs 0x23 35
ss 0x2b 43
ds 0x2b 43
es 0x2b 43
fs 0x0 0
gs 0x63 99

current instructions:
=> 0xabd113 <_ZN4Grid31processDiscoveredCellsForPlayerER6PlayerRSt6vectorIN5boost13intrusive_ptrI4CellEESaIS6_EERKNS3_9unordered13unordered_setISt4pairIiiENS3_4hashISD_EESt8equal_toISD_ESaISD_EEE+2451>: mov (%eax),%ecx
0xabd115 <_ZN4Grid31processDiscoveredCellsForPlayerER6PlayerRSt6vectorIN5boost13intrusive_ptrI4CellEESaIS6_EERKNS3_9unordered13unordered_setISt4pairIiiENS3_4hashISD_EESt8equal_toISD_ESaISD_EEE+2453>: mov %ecx,-0x50(%ebp)
0xabd118 <_ZN4Grid31processDiscoveredCellsForPlayerER6PlayerRSt6vectorIN5boost13intrusive_ptrI4CellEESaIS6_EERKNS3_9unordered13unordered_setISt4pairIiiENS3_4hashISD_EESt8equal_toISD_ESaISD_EEE+2456>: mov 0x4(%eax),%eax
0xabd11b <_ZN4Grid31processDiscoveredCellsForPlayerER6PlayerRSt6vectorIN5boost13intrusive_ptrI4CellEESaIS6_EERKNS3_9unordered13unordered_setISt4pairIiiENS3_4hashISD_EESt8equal_toISD_ESaISD_EEE+2459>: mov %eax,-0x4c(%ebp)
0xabd11e <_ZN4Grid31processDiscoveredCellsForPlayerER6PlayerRSt6vectorIN5boost13intrusive_ptrI4CellEESaIS6_EERKNS3_9unordered13unordered_setISt4pairIiiENS3_4hashISD_EESt8equal_toISD_ESaISD_EEE+2462>: mov 0x8(%edi),%edx
0xabd121 <_ZN4Grid31processDiscoveredCellsForPlayerER6PlayerRSt6vectorIN5boost13intrusive_ptrI4CellEESaIS6_EERKNS3_9unordered13unordered_setISt4pairIiiENS3_4hashISD_EESt8equal_toISD_ESaISD_EEE+2465>: mov 0x4(%edi),%esi
0xabd124 <_ZN4Grid31processDiscoveredCellsForPlayerER6PlayerRSt6vectorIN5boost13intrusive_ptrI4CellEESaIS6_EERKNS3_9unordered13unordered_setISt4pairIiiENS3_4hashISD_EESt8equal_toISD_ESaISD_EEE+2468>: test %edx,%edx
0xabd126 <_ZN4Grid31processDiscoveredCellsForPlayerER6PlayerRSt6vectorIN5boost13intrusive_ptrI4CellEESaIS6_EERKNS3_9unordered13unordered_setISt4pairIiiENS3_4hashISD_EESt8equal_toISD_ESaISD_EEE+2470>: je 0xabd0e8 <_ZN4Grid31processDiscoveredCellsForPlayerER6PlayerRSt6vectorIN5boost13intrusive_ptrI4CellEESaIS6_EERKNS3_9unordered13unordered_setISt4pairIiiENS3_4hashISD_EESt8equal_toISD_ESaISD_EEE+2408>
0xabd128 <_ZN4Grid31processDiscoveredCellsForPlayerER6PlayerRSt6vectorIN5boost13intrusive_ptrI4CellEESaIS6_EERKNS3_9unordered13unordered_setISt4pairIiiENS3_4hashISD_EESt8equal_toISD_ESaISD_EEE+2472>: mov %ecx,%edx
0xabd12a <_ZN4Grid31processDiscoveredCellsForPlayerER6PlayerRSt6vectorIN5boost13intrusive_ptrI4CellEESaIS6_EERKNS3_9unordered13unordered_setISt4pairIiiENS3_4hashISD_EESt8equal_toISD_ESaISD_EEE+2474>: mov %eax,%edi
0xabd12c <_ZN4Grid31processDiscoveredCellsForPlayerER6PlayerRSt6vectorIN5boost13intrusive_ptrI4CellEESaIS6_EERKNS3_9unordered13unordered_setISt4pairIiiENS3_4hashISD_EESt8equal_toISD_ESaISD_EEE+2476>: sub $0x61c88647,%edx
0xabd132 <_ZN4Grid31processDiscoveredCellsForPlayerER6PlayerRSt6vectorIN5boost13intrusive_ptrI4CellEESaIS6_EERKNS3_9unordered13unordered_setISt4pairIiiENS3_4hashISD_EESt8equal_toISD_ESaISD_EEE+2482>: mov %edx,%eax
0xabd134 <_ZN4Grid31processDiscoveredCellsForPlayerER6PlayerRSt6vectorIN5boost13intrusive_ptrI4CellEESaIS6_EERKNS3_9unordered13unordered_setISt4pairIiiENS3_4hashISD_EESt8equal_toISD_ESaISD_EEE+2484>: shl $0x6,%eax
0xabd137 <_ZN4Grid31processDiscoveredCellsForPlayerER6PlayerRSt6vectorIN5boost13intrusive_ptrI4CellEESaIS6_EERKNS3_9unordered13unordered_setISt4pairIiiENS3_4hashISD_EESt8equal_toISD_ESaISD_EEE+2487>: lea -0x61c88647(%edi,%eax,1),%ecx
0xabd13e <_ZN4Grid31processDiscoveredCellsForPlayerER6PlayerRSt6vectorIN5boost13intrusive_ptrI4CellEESaIS6_EERKNS3_9unordered13unordered_setISt4pairIiiENS3_4hashISD_EESt8equal_toISD_ESaISD_EEE+2494>: mov %edx,%eax
0xabd140 <_ZN4Grid31processDiscoveredCellsForPlayerER6PlayerRSt6vectorIN5boost13intrusive_ptrI4CellEESaIS6_EERKNS3_9unordered13unordered_setISt4pairIiiENS3_4hashISD_EESt8equal_toISD_ESaISD_EEE+2496>: shr $0x2,%eax

threads backtrace:

Thread 8 (Thread 0xf2e6bb70 (LWP 14321)):
#0 0x00130430 in __kernel_vsyscall ()
#1 0x00140824 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2 0x004ac7c3 in boost::condition_variable::do_wait_until(boost::unique_lockboost::mutex&, timespec const&) () from plugins/mysql.so
#3 0x004a7561 in boost::this_thread::hiden::sleep_for(timespec const&) () from plugins/mysql.so
#4 0x004835da in CMySQLConnection::ProcessQueries() () from plugins/mysql.so
#5 0x00483787 in boost::detail::thread_data<boost::_bi::bind_t<void, boost::_mfi::mf0<void, CMySQLConnection>, boost::_bi::list1boost::_bi::value<CMySQLConnection* > > >::run() () from plugins/mysql.so
#6 0x004a6fc8 in thread_proxy () from plugins/mysql.so
#7 0x0013cbc9 in start_thread () from /lib/libpthread.so.0
#8 0x00366dee in clone () from /lib/libc.so.6

Thread 7 (Thread 0xf386cb70 (LWP 14320)):
#0 0x00130430 in __kernel_vsyscall ()
#1 0x00140824 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2 0x004ac7c3 in boost::condition_variable::do_wait_until(boost::unique_lockboost::mutex&, timespec const&) () from plugins/mysql.so
#3 0x004a7561 in boost::this_thread::hiden::sleep_for(timespec const&) () from plugins/mysql.so
#4 0x004835da in CMySQLConnection::ProcessQueries() () from plugins/mysql.so
#5 0x00483787 in boost::detail::thread_data<boost::_bi::bind_t<void, boost::_mfi::mf0<void, CMySQLConnection>, boost::_bi::list1boost::_bi::value<CMySQLConnection* > > >::run() () from plugins/mysql.so
#6 0x004a6fc8 in thread_proxy () from plugins/mysql.so
#7 0x0013cbc9 in start_thread () from /lib/libpthread.so.0
#8 0x00366dee in clone () from /lib/libc.so.6

Thread 6 (Thread 0xf426db70 (LWP 14319)):
#0 0x00130430 in __kernel_vsyscall ()
#1 0x00140824 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2 0x004ac7c3 in boost::condition_variable::do_wait_until(boost::unique_lockboost::mutex&, timespec const&) () from plugins/mysql.so
#3 0x004a7561 in boost::this_thread::hiden::sleep_for(timespec const&) () from plugins/mysql.so
#4 0x004835da in CMySQLConnection::ProcessQueries() () from plugins/mysql.so
#5 0x00483787 in boost::detail::thread_data<boost::_bi::bind_t<void, boost::_mfi::mf0<void, CMySQLConnection>, boost::_bi::list1boost::_bi::value<CMySQLConnection* > > >::run() () from plugins/mysql.so
#6 0x004a6fc8 in thread_proxy () from plugins/mysql.so
#7 0x0013cbc9 in start_thread () from /lib/libpthread.so.0
#8 0x00366dee in clone () from /lib/libc.so.6

Thread 5 (Thread 0xf4c6eb70 (LWP 14318)):
#0 0x00130430 in __kernel_vsyscall ()
#1 0x00140824 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2 0x004ac7c3 in boost::condition_variable::do_wait_until(boost::unique_lockboost::mutex&, timespec const&) () from plugins/mysql.so
#3 0x004a7561 in boost::this_thread::hiden::sleep_for(timespec const&) () from plugins/mysql.so
#4 0x0047e824 in CLog::ProcessLog() () from plugins/mysql.so
#5 0x0047f3e7 in boost::detail::thread_data<boost::_bi::bind_t<void, boost::_mfi::mf0<void, CLog>, boost::_bi::list1boost::_bi::value<CLog* > > >::run() () from plugins/mysql.so
#6 0x004a6fc8 in thread_proxy () from plugins/mysql.so
#7 0x0013cbc9 in start_thread () from /lib/libpthread.so.0
#8 0x00366dee in clone () from /lib/libc.so.6

Thread 4 (Thread 0xf7000b70 (LWP 14317)):
#0 0x00130430 in __kernel_vsyscall ()
#1 0x00325936 in nanosleep () from /lib/libc.so.6
#2 0x0035fb6c in usleep () from /lib/libc.so.6
#3 0x08076410 in ?? ()
#4 0x0013cbc9 in start_thread () from /lib/libpthread.so.0
#5 0x00366dee in clone () from /lib/libc.so.6

Thread 3 (Thread 0xf7de8b70 (LWP 14316)):
#0 0x00130430 in __kernel_vsyscall ()
#1 0x0014043c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2 0x00b80988 in ?? () from plugins/irc.so
#3 0x00b99364 in ?? () from plugins/irc.so
#4 0x00b5d9c8 in ?? () from plugins/irc.so
#5 0x0013cbc9 in start_thread () from /lib/libpthread.so.0
#6 0x00366dee in clone () from /lib/libc.so.6

Thread 1 (Thread 0xf7ff28e0 (LWP 14312)):
#0 0x00abd113 in Grid::processDiscoveredCellsForPlayer(Player&, std::vectorboost::intrusive_ptr<Cell, std::allocatorboost::intrusive_ptr >&, boost::unordered::unordered_set<std::pair<int, int>, boost::hash<std::pair<int, int> >, std::equal_to<std::pair<int, int> >, std::allocator<std::pair<int, int> > > const&) () from plugins/streamer.so
#1 0x00abe379 in Grid::findAllCellsForPlayer(Player&, std::vectorboost::intrusive_ptr<Cell, std::allocatorboost::intrusive_ptr >&) () from plugins/streamer.so
#2 0x00affe6d in Streamer::performPlayerUpdate(Player&, bool) () from plugins/streamer.so
#3 0x00b0088a in Streamer::startAutomaticUpdate() () from plugins/streamer.so
#4 0x00ac9415 in ProcessTick () from plugins/streamer.so
#5 0x080d1ce2 in ?? ()
#6 0x080aef6c in ?? ()
#7 0x080aa13a in ?? ()
#8 0x0029ad26 in __libc_start_main () from /lib/libc.so.6
#9 0x0804b4e1 in ?? ()

@ghost
Copy link

ghost commented Nov 5, 2016

And if it's of any assistance here is how it can be replicated:

1.) Player has map 1 streamed in for him.
2.) Player goes AFK.
3.) Map 1 objects are destroyed, and map 2 is created in a different location.
4.) Player returns from being AFK, server crashes at random times

@Crayder
Copy link

Crayder commented Nov 6, 2016

I actually commented on the wrong issue when I said it was the script, but now with that last comment said I think this might also be the script.

@ghost
Copy link

ghost commented Nov 6, 2016

Again, Crayder I would be very much indebted if you posted a response based in knowledge; instead of thoughtless utters. This is a broad issue - maps are streamed in for a player, he goes AFK and during which time objects are destroyed. He returns and the plugin crashes. Please read before posting. Thanks.

@samp-incognito
Copy link
Owner

It could be the script, but it's odd how processDiscoveredCellsForPlayer was the last function called both times. That backtrace doesn't have line number information, though ("No symbol table info available"), so it's not as helpful as it could be, unfortunately. I'm not sure why that's happening if you did indeed compile with debug symbols. From a quick search it seems that maybe your GDB version is outdated.

Can you also reproduce this in an empty script with a few objects being created and destroyed?

@SgtTheDarknezz
Copy link
Author

I did not compile the latest streamer plugin in debug mode, I was running on no sleep during the time I ran that instance of our sa-mp server in gdb. However i've compiled it in debug mode this time and will be providing you with the results from the next run.

Will also probably try an empty script with object creation & deletion to see if we can replicate it outside of our code.

@SgtTheDarknezz
Copy link
Author

SgtTheDarknezz commented Nov 7, 2016

Alright so after compiling 2.8.2 in debug, this is what I got for you, some lines now.

backtrace:
#0 0x00130430 in kernel_vsyscall ()
No symbol table info available.
#1 0x002ae861 in raise () from /lib/libc.so.6
No symbol table info available.
#2 0x002b013a in abort () from /lib/libc.so.6
No symbol table info available.
#3 0x002a7b7b in __assert_fail_base () from /lib/libc.so.6
No symbol table info available.
#4 0x002a7c36 in __assert_fail () from /lib/libc.so.6
No symbol table info available.
#5 0x00bd02f1 in boost::intrusive_ptr::operator-> (this=0x9336f88) at include/boost/smart_ptr/intrusive_ptr.hpp:174
__PRETTY_FUNCTION
= "T* boost::intrusive_ptr::operator->() const [with T = Cell]"
#6 0x00bced31 in Grid::processDiscoveredCellsForPlayer (this=0x81d5690, player=..., playerCells=std::vector of length 8, capacity 8 = {...}, discoveredCells=...) at src/grid.cpp:629
d = {<std::iterator<std::forward_iterator_tag, std::pair<int, int>, int, std::pair<int, int> const_, std::pair<int, int> const&>> = {}, node_ = 0xd166e4}
a = {<std::iterator<std::forward_iterator_tag, std::pair<int const, boost::intrusive_ptrItem::Area >, int, std::pair<int const, boost::intrusive_ptrItem::Area >, std::pair<int const, boost::intrusive_ptrItem::Area >&>> = {}, node = 0x958ee98}
#7 0x00bcf06e in Grid::findAllCellsForPlayer (this=0x81d5690, player=..., playerCells=std::vector of length 8, capacity 8 = {...}) at src/grid.cpp:656
discoveredCells = {table_ = {<boost::unordered::detail::table<boost::unordered::detail::set<std::allocator<std::pair<int, int> >, std::pair<int, int>, boost::hash<std::pair<int, int> >, std::equal_to<std::pair<int, int> > > >> = {<boost::unordered::detail::functions<boost::hash<std::pair<int, int> >, std::equal_to<std::pair<int, int> > >> = {static nothrow_move_assignable = true, static nothrow_move_constructible = , current_ = false, funcs_ = {{data_ = {buf = "\352", align_ = -22 '\352'}}, {data_ = {buf = "\300", align_ = -64 '\300'}}}}, allocators_ = {boost::unordered::detail::compressed_base<std::allocator<boost::unordered::detail::ptr_bucket, 1>> = {std::allocatorboost::unordered::detail::ptr_bucket = {<gnu_cxx::new_allocatorboost::unordered::detail::ptr_bucket> = {}, }, }, <boost::unordered::detail::compressed_base<std::allocator<boost::unordered::detail::ptr_node<std::pair<int, int> > >, 2>> = {<std::allocator<boost::unordered::detail::ptr_node<std::pair<int, int> > >> = {<gnu_cxx::new_allocator<boost::unordered::detail::ptr_node<std::pair<int, int> > >> = {}, }, }, }, bucket_count = 17, size = 7, mlf = 1, max_load = 17, buckets_ = 0x95c53d0}, }}
#8 0x00c33004 in Streamer::performPlayerUpdate (this=0x81d57c0, player=..., automatic=true) at src/streamer.cpp:192
delta = {<Eigen::PlainObjectBase<Eigen::Matrix<float, 3, 1, 0, 3, 1> >> = {<Eigen::MatrixBase<Eigen::Matrix<float, 3, 1, 0, 3, 1> >> = {<Eigen::DenseBase<Eigen::Matrix<float, 3, 1, 0, 3, 1> >> = {<Eigen::internal::special_scalar_op_base<Eigen::Matrix<float, 3, 1, 0, 3, 1>, float, float, Eigen::DenseCoeffsBase<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 3>, false>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 3>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 0>> = {<Eigen::EigenBase<Eigen::Matrix<float, 3, 1, 0, 3, 1> >> = {}, }, }, }, }, }, }, m_storage = {m_data = {array = {0, 0, 0}}}}, }
position = {<Eigen::PlainObjectBase<Eigen::Matrix<float, 3, 1, 0, 3, 1> >> = {<Eigen::MatrixBase<Eigen::Matrix<float, 3, 1, 0, 3, 1> >> = {<Eigen::DenseBase<Eigen::Matrix<float, 3, 1, 0, 3, 1> >> = {<Eigen::internal::special_scalar_op_base<Eigen::Matrix<float, 3, 1, 0, 3, 1>, float, float, Eigen::DenseCoeffsBase<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 3>, false>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 3>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1>> = {<Eigen::DenseCoeffsBase<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 0>> = {<Eigen::EigenBase<Eigen::Matrix<float, 3, 1, 0, 3, 1> >> = {}, }, }, }, }, }, }, m_storage = {m_data = {array = {2044.10156, -2619.0769, 13.9749298}}}}, }
update = true
cells = std::vector of length 8, capacity 8 = {{px = 0x865e810}, {px = 0x8668230}, {px = 0x865b268}, {px = 0x8effb60}, {px = 0x865d370}, {px = 0x86a8d20}, {px = 0x8654b60}, {px = 0x9430078}}
#9 0x00c325f4 in Streamer::startAutomaticUpdate (this=0x81d57c0) at src/streamer.cpp:84
p = {<std::iterator<std::forward_iterator_tag, std::pair<int const, Player>, int, std::pair<int const, Player>*, std::pair<int const, Player>&>> = {}, node_ = 0x81e3e80}
startTime = {static boost_chrono_test_159 = , d_ = {static boost_chrono_test_424 = , static boost_chrono_test_426 = , static boost_chrono_test_428 = , rep_ = 9119498468495950}}
#10 0x00beb991 in ProcessTick () at src/main.cpp:245
No locals.
#11 0x080d1ce2 in ?? ()
No symbol table info available.
#12 0x080aef6c in ?? ()
No symbol table info available.
#13 0x080aa13a in ?? ()
No symbol table info available.
#14 0x0029ad26 in __libc_start_main () from /lib/libc.so.6
No symbol table info available.
#15 0x0804b4e1 in ?? ()
No symbol table info available.

registers:
eax 0x0 0
ecx 0x443a 17466
edx 0x6 6
ebx 0x443a 17466
esp 0xffffd044 0xffffd044
ebp 0xffffd05c 0xffffd05c
esi 0x0 0
edi 0x417ff4 4292596
eip 0x130430 0x130430 <__kernel_vsyscall+16>
eflags 0x200296 [ PF AF SF IF ID ]
cs 0x23 35
ss 0x2b 43
ds 0x2b 43
es 0x2b 43
fs 0x0 0
gs 0x63 99

current instructions:
=> 0x130430 <__kernel_vsyscall+16>: pop %ebp
0x130431 <__kernel_vsyscall+17>: pop %edx
0x130432 <__kernel_vsyscall+18>: pop %ecx
0x130433 <__kernel_vsyscall+19>: ret
0x130434: add %ch,(%esi)
0x130436: jae 0x1304a0
0x130438: jae 0x1304ae
0x13043a: jb 0x1304b0
0x13043c: popa
0x13043d: bound %eax,(%eax)
0x13043f: cs
0x130440: push $0x687361
0x130445: cs
0x130446: fs
0x130447: jns 0x1304b7
0x130449: jae 0x1304c4

threads backtrace:

Thread 8 (Thread 0xf2e6bb70 (LWP 17475)):
#0 0x00130430 in __kernel_vsyscall ()
#1 0x00140824 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2 0x004ac7c3 in boost::condition_variable::do_wait_until(boost::unique_lockboost::mutex&, timespec const&) () from plugins/mysql.so
#3 0x004a7561 in boost::this_thread::hiden::sleep_for(timespec const&) () from plugins/mysql.so
#4 0x004835da in CMySQLConnection::ProcessQueries() () from plugins/mysql.so
#5 0x00483787 in boost::detail::thread_data<boost::_bi::bind_t<void, boost::_mfi::mf0<void, CMySQLConnection>, boost::_bi::list1boost::_bi::value<CMySQLConnection* > > >::run() () from plugins/mysql.so
#6 0x004a6fc8 in thread_proxy () from plugins/mysql.so
#7 0x0013cbc9 in start_thread () from /lib/libpthread.so.0
#8 0x00366dee in clone () from /lib/libc.so.6

Thread 7 (Thread 0xf386cb70 (LWP 17474)):
#0 0x00130430 in __kernel_vsyscall ()
#1 0x00140824 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2 0x004ac7c3 in boost::condition_variable::do_wait_until(boost::unique_lockboost::mutex&, timespec const&) () from plugins/mysql.so
#3 0x004a7561 in boost::this_thread::hiden::sleep_for(timespec const&) () from plugins/mysql.so
#4 0x004835da in CMySQLConnection::ProcessQueries() () from plugins/mysql.so
#5 0x00483787 in boost::detail::thread_data<boost::_bi::bind_t<void, boost::_mfi::mf0<void, CMySQLConnection>, boost::_bi::list1boost::_bi::value<CMySQLConnection* > > >::run() () from plugins/mysql.so
#6 0x004a6fc8 in thread_proxy () from plugins/mysql.so
#7 0x0013cbc9 in start_thread () from /lib/libpthread.so.0
#8 0x00366dee in clone () from /lib/libc.so.6

Thread 6 (Thread 0xf426db70 (LWP 17473)):
#0 0x00130430 in __kernel_vsyscall ()
#1 0x00140824 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2 0x004ac7c3 in boost::condition_variable::do_wait_until(boost::unique_lockboost::mutex&, timespec const&) () from plugins/mysql.so
#3 0x004a7561 in boost::this_thread::hiden::sleep_for(timespec const&) () from plugins/mysql.so
#4 0x004835da in CMySQLConnection::ProcessQueries() () from plugins/mysql.so
#5 0x00483787 in boost::detail::thread_data<boost::_bi::bind_t<void, boost::_mfi::mf0<void, CMySQLConnection>, boost::_bi::list1boost::_bi::value<CMySQLConnection* > > >::run() () from plugins/mysql.so
#6 0x004a6fc8 in thread_proxy () from plugins/mysql.so
#7 0x0013cbc9 in start_thread () from /lib/libpthread.so.0
#8 0x00366dee in clone () from /lib/libc.so.6

Thread 5 (Thread 0xf4c6eb70 (LWP 17472)):
#0 0x00130430 in __kernel_vsyscall ()
#1 0x00140824 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2 0x004ac7c3 in boost::condition_variable::do_wait_until(boost::unique_lockboost::mutex&, timespec const&) () from plugins/mysql.so
#3 0x004a7561 in boost::this_thread::hiden::sleep_for(timespec const&) () from plugins/mysql.so
#4 0x0047e824 in CLog::ProcessLog() () from plugins/mysql.so
#5 0x0047f3e7 in boost::detail::thread_data<boost::_bi::bind_t<void, boost::_mfi::mf0<void, CLog>, boost::_bi::list1boost::_bi::value<CLog* > > >::run() () from plugins/mysql.so
#6 0x004a6fc8 in thread_proxy () from plugins/mysql.so
#7 0x0013cbc9 in start_thread () from /lib/libpthread.so.0
#8 0x00366dee in clone () from /lib/libc.so.6

Thread 4 (Thread 0xf7000b70 (LWP 17471)):
#0 0x00130430 in __kernel_vsyscall ()
#1 0x00325936 in nanosleep () from /lib/libc.so.6
#2 0x0035fb6c in usleep () from /lib/libc.so.6
#3 0x08076410 in ?? ()
#4 0x0013cbc9 in start_thread () from /lib/libpthread.so.0
#5 0x00366dee in clone () from /lib/libc.so.6

Thread 3 (Thread 0xf7de8b70 (LWP 17470)):
#0 0x00130430 in __kernel_vsyscall ()
#1 0x0014043c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2 0x00d7c988 in ?? () from plugins/irc.so
#3 0x00d95364 in ?? () from plugins/irc.so
#4 0x00d599c8 in ?? () from plugins/irc.so
#5 0x0013cbc9 in start_thread () from /lib/libpthread.so.0
#6 0x00366dee in clone () from /lib/libc.so.6

Thread 1 (Thread 0xf7ff28e0 (LWP 17466)):
#0 0x00130430 in __kernel_vsyscall ()
#1 0x002ae861 in raise () from /lib/libc.so.6
#2 0x002b013a in abort () from /lib/libc.so.6
#3 0x002a7b7b in __assert_fail_base () from /lib/libc.so.6
#4 0x002a7c36 in __assert_fail () from /lib/libc.so.6
#5 0x00bd02f1 in boost::intrusive_ptr::operator-> (this=0x9336f88) at include/boost/smart_ptr/intrusive_ptr.hpp:174
#6 0x00bced31 in Grid::processDiscoveredCellsForPlayer (this=0x81d5690, player=..., playerCells=std::vector of length 8, capacity 8 = {...}, discoveredCells=...) at src/grid.cpp:629
#7 0x00bcf06e in Grid::findAllCellsForPlayer (this=0x81d5690, player=..., playerCells=std::vector of length 8, capacity 8 = {...}) at src/grid.cpp:656
#8 0x00c33004 in Streamer::performPlayerUpdate (this=0x81d57c0, player=..., automatic=true) at src/streamer.cpp:192
#9 0x00c325f4 in Streamer::startAutomaticUpdate (this=0x81d57c0) at src/streamer.cpp:84
#10 0x00beb991 in ProcessTick () at src/main.cpp:245
#11 0x080d1ce2 in ?? ()
#12 0x080aef6c in ?? ()
#13 0x080aa13a in ?? ()
#14 0x0029ad26 in __libc_start_main () from /lib/libc.so.6
#15 0x0804b4e1 in ?? ()

@samp-incognito
Copy link
Owner

Thanks, that's very helpful. I can see what's causing this now. Actually, I'm rather shocked it hasn't been caught before...

samp-incognito pushed a commit that referenced this issue Nov 8, 2016
If an item currently visible for a player has been reassigned to the
global cell in between updates, it could cause a crash. Related to #150.
@ghost
Copy link

ghost commented Nov 8, 2016

All the while we were convinced that the objects creating/destroying was causing this, but I discovered yesterday evening that it was in fact zones. Thanks Incognito, we will test and report back!

@SgtTheDarknezz
Copy link
Author

The crashes are still occurring, what's odd is that they're always the same, will post a new gdb within the upcoming hours.

@ghost
Copy link

ghost commented Nov 10, 2016

Additionally, data manipulation natives such as Streamer_AppendArrayData, Streamer_SetFloatData, Streamer_RemoveArrayData are claiming invalid data is specified. Sometimes it works, sometimes it doesn't in light of the aforementioned commit.

@SgtTheDarknezz
Copy link
Author

GDB also fails to give any information now related to the crash, which is also very confusing.

@djacicd
Copy link

djacicd commented Nov 10, 2016

@TheDarknessz0rz @SFSEdev Same for me, it's still crashing, and after recompile those functions are claiming that invalid data is specified. So i was forced to get back on 2.8.2 official release and to delete area system.

@samp-incognito
Copy link
Owner

Additionally, data manipulation natives such as Streamer_AppendArrayData, Streamer_SetFloatData, Streamer_RemoveArrayData are claiming invalid data is specified.

You'll need to compile with the newest streamer.inc from here.

@ghost
Copy link

ghost commented Nov 10, 2016

You'll need to compile with the newest streamer.inc from here.

Didn't cross my mind, how embarrassing...

Nevertheless, it is still crashing and we will provide as much information as possible in the upcoming hours. Thanks!

@SgtTheDarknezz
Copy link
Author

SgtTheDarknezz commented Nov 13, 2016

The crash reported in this issue thread has been resolved, we are currently tracking another crash unrelated to streamer, this can be tagged as fixed. Thank you for the speedy replies & fix incognito!

@Crayder
Copy link

Crayder commented Nov 13, 2016

Share your solution so others can use it when/if they have this issue. Also tell us how to reproduce it.

@ghost
Copy link

ghost commented Nov 14, 2016

Share your solution so others can use it when/if they have this issue. Also tell us how to reproduce it.

Did you even bother reading the replies above? (psst... this isn't the first time your inability to read has shown)

@Crayder
Copy link

Crayder commented Nov 14, 2016

Did you even bother reading the replies above?

Mind reading my comment again? Neither of you posted the fucking fix or how to reproduce the issue (NOT the same as how you came across the issue, we need to know WHAT you found causes the fucking issue). These are key ingredients to helping others in the future.

(psst... this isn't the first time your inability to read has shown)

My inability to read what exactly? I read the crashdetect information and it is something that can easily be reproduced (and I've come across this issue many times and still do) WITHIN THE SCRIPT.

@SgtTheDarknezz
Copy link
Author

SgtTheDarknezz commented Nov 14, 2016

Crayder I don't think you understand, the issue we've posted here was in streamer code, which Incognito has pushed a fix for. If you did read the issue thread, you'd see that incognito pushed a commit that solved the issue we opened here...... How would it be possible for us to speak about a fix for a piece of broken code that wasn't ours to begin with? Incognito has outlined the issue himself & patched it.

Are you sure you've actually read it? Just so things do not divulge further off topic, @samp-incognito you may tag this issue as fixed, your patch commit has fixed the issue.

The crash issue we experience now appears to lie deeper in the sa-mp code, as our method of invocation is not preferred by the sa-mp natives.

@Crayder
Copy link

Crayder commented Nov 14, 2016

Oh really? So I'm supposed to just assume that his push actually did fix the issue even though right after he pushed that you said the following?

The crashes are still occurring, what's odd is that they're always the same, will post a new gdb within the upcoming hours.

Yeah, sorry bud but I don't think so. If that WAS the fix and it DID work, you should've clarified that when you said this... which btw you said way after you said what I quoted above:

The crash reported in this issue thread has been resolved

@SgtTheDarknezz
Copy link
Author

SgtTheDarknezz commented Nov 14, 2016

Full of spite, looking to shun others work and then ask for their solution, you're just full of heat, I posted a day ago that the issue reported in this thread was fixed, and now have ran into a separate issue.

you just don't learn... Also, this will be the last time I reply here, we are not entitled to explain anything to you that you can't already learn from reading this thread. Thank you incognito for the help you've provided us, sorry to see that this thread has turned into a fuckfest of nonsense..... wasn't our intentions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants