Go Back   EQEmulator Home > EQEmulator Forums > Support > Support::Linux Servers

Support::Linux Servers Support forum for Linux EQEMu users.

Reply
 
Thread Tools Display Modes
  #1  
Old 06-22-2013, 01:21 PM
PiB
Fire Beetle
 
Join Date: Aug 2012
Posts: 15
Default Perl crash when shutting down a zone

Since I upgraded to Perl 5.18 from Perl 5.16, 'zone' is always crashing when shutting down a zone. Here is the backtrace:

Code:
#0  0x00007ffff7acae71 in Perl__invlist_intersection_maybe_complement_2nd () from /usr/lib64/perl5/core_perl/CORE/libperl.so
#1  0x00007ffff7ad02aa in S_regclass () from /usr/lib64/perl5/core_perl/CORE/libperl.so
#2  0x00007ffff7ad3eeb in S_regatom () from /usr/lib64/perl5/core_perl/CORE/libperl.so
#3  0x00007ffff7ad60e4 in S_regbranch () from /usr/lib64/perl5/core_perl/CORE/libperl.so
#4  0x00007ffff7acc684 in S_reg () from /usr/lib64/perl5/core_perl/CORE/libperl.so
#5  0x00007ffff7ad3fe0 in S_regatom () from /usr/lib64/perl5/core_perl/CORE/libperl.so
#6  0x00007ffff7ad60e4 in S_regbranch () from /usr/lib64/perl5/core_perl/CORE/libperl.so
#7  0x00007ffff7acc684 in S_reg () from /usr/lib64/perl5/core_perl/CORE/libperl.so
#8  0x00007ffff7ad3fe0 in S_regatom () from /usr/lib64/perl5/core_perl/CORE/libperl.so
#9  0x00007ffff7ad60e4 in S_regbranch () from /usr/lib64/perl5/core_perl/CORE/libperl.so
#10 0x00007ffff7acc684 in S_reg () from /usr/lib64/perl5/core_perl/CORE/libperl.so
#11 0x00007ffff7adede5 in Perl_re_op_compile () from /usr/lib64/perl5/core_perl/CORE/libperl.so
#12 0x00007ffff7a90c92 in Perl_pmruntime () from /usr/lib64/perl5/core_perl/CORE/libperl.so
#13 0x00007ffff7ac1b5d in Perl_yyparse () from /usr/lib64/perl5/core_perl/CORE/libperl.so
#14 0x00007ffff7b3cd72 in S_doeval () from /usr/lib64/perl5/core_perl/CORE/libperl.so
#15 0x00007ffff7b4798c in Perl_pp_require () from /usr/lib64/perl5/core_perl/CORE/libperl.so
#16 0x00007ffff7b04e26 in Perl_runops_standard () from /usr/lib64/perl5/core_perl/CORE/libperl.so
#17 0x00007ffff7a963b0 in Perl_call_sv () from /usr/lib64/perl5/core_perl/CORE/libperl.so
#18 0x00007ffff7a98477 in Perl_call_list () from /usr/lib64/perl5/core_perl/CORE/libperl.so
#19 0x00007ffff7a7e48f in S_process_special_blocks () from /usr/lib64/perl5/core_perl/CORE/libperl.so
#20 0x00007ffff7a8fa9c in Perl_newATTRSUB_flags () from /usr/lib64/perl5/core_perl/CORE/libperl.so
#21 0x00007ffff7a905f0 in Perl_newATTRSUB () from /usr/lib64/perl5/core_perl/CORE/libperl.so
#22 0x00007ffff7a92c29 in Perl_utilize () from /usr/lib64/perl5/core_perl/CORE/libperl.so
#23 0x00007ffff7ac2255 in Perl_yyparse () from /usr/lib64/perl5/core_perl/CORE/libperl.so
#24 0x00007ffff7b3cd72 in S_doeval () from /usr/lib64/perl5/core_perl/CORE/libperl.so
#25 0x00007ffff7b48a14 in Perl_pp_entereval () from /usr/lib64/perl5/core_perl/CORE/libperl.so
#26 0x00007ffff7a96b94 in Perl_eval_sv () from /usr/lib64/perl5/core_perl/CORE/libperl.so
#27 0x00007ffff7a96cca in Perl_eval_pv () from /usr/lib64/perl5/core_perl/CORE/libperl.so
#28 0x0000000000705afe in Embperl::init_eval_file (this=0x184a700) at EQEmuServer/zone/embperl.cpp:293
#29 0x0000000000705760 in Embperl::DoInit (this=0x184a700) at EQEmuServer/zone/embperl.cpp:154
#30 0x0000000000705ac3 in Embperl::Reinit (this=0x184a700) at EQEmuServer/zone/embperl.cpp:265
#31 0x00000000006f9843 in PerlembParser::ReloadQuests (this=0x184c730, with_timers=true) at EQEmuServer/zone/embparser.cpp:902
#32 0x00000000008e0bff in QuestParserCollection::ReloadQuests (this=0x184c610, reset_timers=true) at EQEmuServer/zone/QuestParserCollection.cpp:47
#33 0x0000000000968e23 in Zone::Shutdown (quite=false) at EQEmuServer/zone/zone.cpp:882
#34 0x0000000000790a7c in main (argc=2, argv=0x7fffffffe2c8) at EQEmuServer/zone/net.cpp:418
Here is a short log of the zone:
Code:
[Status] Booting gfaydark (54:0)
[Debug] The next weather check for zone: gfaydark will be in 4262 seconds.
[Status] Loading spawn conditions...
[Status] Loading static zone points...
[Status] Loading spawn groups...
[Status] Loading spawn2 points...
[Status] Loading player corpses...
[Status] Loading traps...
[Status] Loading adventure flavor text...
[Status] Loading ground spawns...
[Status] Loading Ground Spawns from DB...
[Status] Loading World Objects from DB...
[Status] Loading Objects from DB...
[Status] Loading doors for gfaydark ...
[Status] Loading Doors from database...
[Status] Loading AA information...
[Status] Loading AA Effects...
[Status] Loaded 1051 AA Effects.
[Status] Loading Merchant Lists...
[Status] Loading Temporary Merchant Lists...
[Status] Successfully loaded Zone Config.
[Status] Loading timezone data...
[Status] Init Finished: ZoneID = 54, Time Offset = 0
Map header: 166645 faces, 4762 nodes, 257033 facelists
Loaded map: 499935 vertices, 166645 faces
Map BB: (-2693.16 -> 2766.28, -2803.81 -> 2751.75, -32777.73 -> 801.81)
Map ./Maps/gfaydark.map loaded.
Water region map has 5809 nodes.
Water Map ./Maps/gfaydark.wtr loaded.
[Error] Starting Log: logs/eqemu_error_zone_11772.log
[Error] Path File ./Maps/gfaydark.path not found.
[Debug] Zone: gfaydark has weather of type 1.
[Debug] Zone: gfaydark(54) has weather type = 1. The weather timer has been enabled.
[Normal] Starting Log: logs/eqemu_zone_11772.log
[Normal] ---- Zone server gfaydark, listening on port:7003 ----
[Status] Zone Bootup: gfaydark (54: 0)
Received Message SyncWorldTime
Time Broadcast Packet: EQTime [12:08 am]
[Debug] Character not in a group: Bound
Unable to get raid id, char not found!
[Quest] Unable to read perl file 'quests/gfaydark/player_v0.pl'
[Status] Zone Shutdown: gfaydark (54)
[Normal] Zone shutdown: going to sleep
It looks like something goes wrong when re-initializing the Perl interpreter. The first initialization goes fine which is interesting. With the following hack the problem goes away:

Code:
diff --git a/zone/embparser.cpp b/zone/embparser.cpp
index 535ce88..b6decf3 100644
--- a/zone/embparser.cpp
+++ b/zone/embparser.cpp
@@ -895,10 +895,11 @@ void PerlembParser::ReloadQuests(bool with_timers) {
        command_clear_perl();
 
        try {
-               if(perl == nullptr)
+        delete perl;
+               //if(perl == nullptr)
                        perl = new Embperl;
-               else
-                       perl->Reinit();
+               //else
+               //      perl->Reinit();
                map_funs();
        }
        catch(std::exception &e) {
Any idea what may be the issue here?
Reply With Quote
  #2  
Old 06-22-2013, 01:35 PM
Kingly_Krab
Administrator
 
Join Date: May 2013
Location: United States
Posts: 1,594
Default

I'm not sure if Perl 5.18 is supported, you may have to re-install 5.16.
Reply With Quote
  #3  
Old 06-22-2013, 03:01 PM
Secrets's Avatar
Secrets
Demi-God
 
Join Date: May 2007
Location: b
Posts: 1,448
Default

No idea, personally, but i'd be more than willing to get to the bottom of it, I get the same crash on Perl 5.14.3
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 10:36 PM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3