topaz-next / topaz

💎 A server emulator for Final Fantasy XI.
GNU General Public License v3.0
55 stars 81 forks source link

Canary Crash (Commit 43979e8) #2553

Closed kaincenteno closed 3 years ago

kaincenteno commented 3 years ago

Additional Information (Steps to reproduce/Expected behavior) :

No information on what the players were doing when crash happened currently but will reach out and add info here when I hear from them.

[31/Jan] [19:35:50] [Action Info] CLIENT Hiro PERFORMING ACTION 09
[31/Jan] [19:35:55] [Info] parse: 0C0 | 3153 314A 02 from user: Lusiphur
[31/Jan] [19:35:55] [Warning] parse: Unhandled game packet 0C0 from user: Lusiphur
[31/Jan] [19:35:56] [Info] parse: 01A | 050C 04FD 0E from user: Hiro
[31/Jan] [19:35:56] [Action Info] CLIENT Hiro PERFORMING ACTION 09
[sol3] An error occurred and panic has been invoked: attempt to index a nil value
terminate called after throwing an instance of 'sol::error'
  what():  lua: error: attempt to index a nil value

Thread 1 "topaz_game" received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50      ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
45      in ../sysdeps/unix/sysv/linux/raise.c
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1  0x00007ffff7df4859 in __GI_abort () at abort.c:79
#2  0x00007ffff7b14951 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#3  0x00007ffff7b2047c in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#4  0x00007ffff7b204e7 in std::terminate() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#5  0x00007ffff7b20799 in __cxa_throw () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#6  0x000055555557d1c4 in sol::default_at_panic (L=0x40020378) at /usr/include/c++/9/ext/new_allocator.h:89
#7  0x00007ffff7c6cee0 in ?? () from /usr/lib/x86_64-linux-gnu/libluajit-5.1.so.2
#8  0x00007ffff7c81d56 in ?? () from /usr/lib/x86_64-linux-gnu/libluajit-5.1.so.2
#9  0x00007ffff7c70580 in ?? () from /usr/lib/x86_64-linux-gnu/libluajit-5.1.so.2
#10 0x00007ffff7c95465 in ?? () from /usr/lib/x86_64-linux-gnu/libluajit-5.1.so.2
#11 0x00007ffff7c95520 in ?? () from /usr/lib/x86_64-linux-gnu/libluajit-5.1.so.2
#12 0x00007ffff7cab64d in lua_getfield () from /usr/lib/x86_64-linux-gnu/libluajit-5.1.so.2
#13 0x00005555555e0be3 in sol::stack::field_getter<char [15], false, false, void>::get<char const (&) [15]> (
    this=<optimized out>, tableindex=<optimized out>, key=..., L=0x40020378)
    at /topaz-next/ext/sol/include/sol/sol.hpp:23462
#14 sol::stack::get_field<false, false, char const (&) [15]> (tableindex=<optimized out>, key=..., L=0x40020378)
    at /topaz-next/ext/sol/include/sol/sol.hpp:10939
#15 sol::basic_table_core<true, sol::basic_reference<false> >::traverse_get_deep<false, false, (sol::detail::insert_mode)0, sol::basic_protected_function<sol::basic_reference<false>, false, sol::basic_reference<false> >, char const (&) [15]> (key=..., table_index=<optimized out>, this=<optimized out>)
    at /topaz-next/ext/sol/include/sol/sol.hpp:23470
#16 sol::basic_table_core<true, sol::basic_reference<false> >::traverse_get_deep<false, false, (sol::detail::insert_mode)0, sol::basic_protected_function<sol::basic_reference<false>, false, sol::basic_reference<false> >, char const*&, char const (&) [15]> (key=<optimized out>,
    table_index=<optimized out>, this=<optimized out>) at /topaz-next/ext/sol/include/sol/sol.hpp:23479
#17 sol::basic_table_core<true, sol::basic_reference<false> >::traverse_get_deep<false, false, (sol::detail::insert_mode)0, sol::basic_protected_function<sol::basic_reference<false>, false, sol::basic_reference<false> >, char const (&) [5], char const*&, char const (&) [15]> (key=...,
    table_index=<optimized out>, this=<optimized out>) at /topaz-next/ext/sol/include/sol/sol.hpp:23479
#18 sol::basic_table_core<true, sol::basic_reference<false> >::traverse_get_deep<false, false, (sol::detail::insert_mode)0, sol::basic_protected_function<sol::basic_reference<false>, false, sol::basic_reference<false> >, char const (&) [10], char const (&) [5], char const*&, char const (&) [15]> (
    key=..., table_index=<optimized out>, this=<optimized out>) at /topaz-next/ext/sol/include/sol/sol.hpp:23479
#19 sol::basic_table_core<true, sol::basic_reference<false> >::traverse_get_deep<false, false, (sol::detail::insert_mode)0, sol::basic_protected_function<sol::basic_reference<false>, false, sol::basic_reference<false> >, char const (&) [8], char const (&) [10], char const (&) [5], char const*&, char const (&) [15]> (key=..., table_index=<optimized out>, this=<optimized out>) at /topaz-next/ext/sol/include/sol/sol.hpp:23479
#20 sol::basic_table_core<true, sol::basic_reference<false> >::traverse_get_deep<true, false, (sol::detail::insert_mode)0, sol::basic_protected_function<sol::basic_reference<false>, false, sol::basic_reference<false> >, char const (&) [4], char const (&) [8], char const (&) [10], char const (&) [5], char const*&, char const (&) [15]> (table_index=<optimized out>, key=..., this=<optimized out>)
    at /topaz-next/ext/sol/include/sol/sol.hpp:23479
#21 sol::basic_table_core<true, sol::basic_reference<false> >::traverse_get_single<false, sol::basic_protected_function<sol::basic_reference<false>, false, sol::basic_reference<false> >, char const (&) [4], char const (&) [8], char const (&) [10], char const (&) [5], char const*&, char const (&) [15]> (table_index=<optimized out>, this=<optimized out>) at /topaz-next/ext/sol/include/sol/sol.hpp:23443
#22 sol::basic_table_core<true, sol::basic_reference<false> >::traverse_get<sol::basic_protected_function<sol::basic_reference<false>, false, sol::basic_reference<false> >, char const (&) [4], char const (&) [8], char const (&) [10], char const (&) [5], char const*&, char const (&) [15]> (
    this=<optimized out>) at /topaz-next/ext/sol/include/sol/sol.hpp:23750
#23 sol::table_proxy<sol::basic_table_core<true, sol::basic_reference<false> >&, std::tuple<char const (&) [4], char const (&) [8], char const (&) [10], char const (&) [5], char const*&, char const (&) [15]> >::tuple_get<sol::basic_protected_function<sol::basic_reference<false>, false, sol::basic_reference<false> >, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul>(std::integer_sequence<unsigned long, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul>) const & (this=<optimized out>)
    at /topaz-next/ext/sol/include/sol/sol.hpp:22975
#24 sol::table_proxy<sol::basic_table_core<true, sol::basic_reference<false> >&, std::tuple<char const (&) [4], char const (&) [8], char const (&) [10], char const (&) [5], char const*&, char const (&) [15]> >::get<sol::basic_protected_function<sol::basic_reference<false>, false, sol::basic_reference<false> > >() const & (this=<optimized out>) at /topaz-next/ext/sol/include/sol/sol.hpp:23073
#25 sol::proxy_base<sol::table_proxy<sol::basic_table_core<true, sol::basic_reference<false> >&, std::tuple<char const (&) [4], char const (&) [8], char const (&) [10], char const (&) [5], char const*&, char const (&) [15]> > >::operator sol::basic_protected_function<sol::basic_reference<false>, false, sol::basic_reference<false> ><sol::basic_protected_function<sol::basic_reference<false>, false, sol::basic_reference<false> >, (sol::meta::enable_t)0>() const (this=<optimized out>) at /topaz-next/ext/sol/include/sol/sol.hpp:15482
#26 luautils::OnAbilityCheck (PMsgTarget=<synthetic pointer>, PAbility=0x55558a82cde0, PTarget=0x55558a83feb0, PChar=0x55558a8712e0)
    at /topaz-next/src/map/lua/luautils.cpp:3217
#27 CAbilityState::CanUseAbility (this=0x555583728840) at /topaz-next/src/map/ai/states/ability_state.cpp:168
#28 CAbilityState::Update (this=0x555583728840, tick=...) at /topaz-next/src/map/ai/states/ability_state.cpp:103
#29 0x0000555555769efd in CState::DoUpdate (tick=..., this=0x555583728840) at /topaz-next/src/map/ai/states/state.cpp:88
#30 CAIContainer::Tick (this=0x55558a6f7b80, _tick=...) at /topaz-next/src/map/ai/ai_container.cpp:379
#31 0x0000555555776d3b in CZoneEntities::ZoneServer (this=0x5555642ec960, tick=..., check_regions=false) at /usr/include/c++/9/bits/unique_ptr.h:360
#32 0x000055555576c9ef in CZone::ZoneServer (this=0x555564227890, tick=..., check_regions=<optimized out>)
    at /topaz-next/src/map/zone.cpp:804
#33 0x000055555576d2bb in zone_server (tick=..., PTask=<optimized out>) at /usr/include/c++/9/any:556
#34 0x00005555555b669f in CTaskMgr::DoTimer (tick=..., this=0x555555a08d70) at /usr/include/c++/9/chrono:557
#35 main (argc=<optimized out>, argv=<optimized out>) at /topaz-next/src/common/kernel.cpp:275
   0x7ffff7e15185 <__GI_raise+197>:     (bad)  
   0x7ffff7e15186 <__GI_raise+198>:     add    %al,(%rax)
   0x7ffff7e15188 <__GI_raise+200>:     add    %cl,(%rdi)
   0x7ffff7e1518a <__GI_raise+202>:     add    $0x24848b48,%eax
   0x7ffff7e1518f <__GI_raise+207>:     or     %al,(%rcx)
zach2good commented 3 years ago

[31/Jan] [19:35:56] [Action Info] CLIENT Hiro PERFORMING ACTION 09 Can you ask Hiro what job they were playing at the time of the crash, so it's easier to track down which ability is causing this?

kaincenteno commented 3 years ago

@zach2good

from Hiro: I was playing BST and used the marco to use my pet ready ability and got r0

Era-Lusiphur commented 3 years ago

Hiro just did it again to test. BST 99 and Bugeyed Broncha using Ready move. Also tested Crab jug pet, Ready move crashed.

Testing Sic on charmed pet no crash.

Also Killer Instinct appeared to crash it as well.

zach2good commented 3 years ago

https://github.com/topaz-next/topaz/commit/1e500c7a977c975040b8f50b86da3f4659e484b1

I don't think Ready has ever worked... but at least now it doesn't crash (it'll log a warning that it can't find the ability you're trying to use; because BST mob abilities are technically abilities and not mobskills and we shouldn't be forwarding these requests into the mobskill area)

zach2good commented 3 years ago

The crash is fixed, but apparently ready used to work... so I guess I have to fix it...

zach2good commented 3 years ago

Re-fix-fix'd: https://github.com/topaz-next/topaz/commit/a109668e033b5ecdf36655b57774fd9597463dfc