Log in

View Full Version : zone crashing when player dies, returns


fooliset
10-23-2012, 05:21 PM
I have a build I got from SVN a few days ago, I compiled it myself, Debug 64x using Visual Studio 2012.

I was testing something and noticed if my character died, then quickly returned to the same zone I died in, the zone would crash and assert on the server leaving that zone unavailable.

I did some digging around and found some code in embparser.cpp that gets a list off all the *.pl files in plugins and then calls main::eval_file, where we crash and nothing useful is written in any of the logs.

I modified empperl.cpp ~ line 286 adding "print \"Reading file: $filename\\n\";" which causes a line to be written to the zone console when each *.pl file is evaluated. By doing this I was able to determine GetSpawn2IDs.pl was causing the exception. I'm not a Perl expert and even less so in how it relates to eqemu, for my own resolution I just named the file *.pl.bad and it resolved the issue.

Hope someone finds it useful.

trevius
10-24-2012, 04:52 AM
Looks like that plugin uses DBI to connect to the database through perl. Maybe your build doesn't support DBI, or maybe it was failing at some other point in the plugin and causing an error that was crashing the zone. It is hard to say without further debugging. I haven't personally used that plugin, so I don't know much about the functionality for it or why it would cause that type of crash. It probably isn't really a crash caused by EQEmu, as it seems to be specific to that script, which is managed by PEQ and/or Akkadius' plugin repository.

lerxst2112
10-24-2012, 07:39 AM
The only script I see that uses it is quests\potactics\#Rallos_Zek_the_Warlord.pl. I don't think I've updated quests in a while though, so maybe others do. *shrug*

Akkadius
10-24-2012, 12:44 PM
Looks like that plugin uses DBI to connect to the database through perl. Maybe your build doesn't support DBI, or maybe it was failing at some other point in the plugin and causing an error that was crashing the zone. It is hard to say without further debugging. I haven't personally used that plugin, so I don't know much about the functionality for it or why it would cause that type of crash. It probably isn't really a crash caused by EQEmu, as it seems to be specific to that script, which is managed by PEQ and/or Akkadius' plugin repository.

DBI isn't installed by default. And if it is trying to resolve to a DNS name it could hang for a while. I don't know how it would be hanging though.

fooliset
10-24-2012, 12:58 PM
Thanks for the responses, I hadn't really considered the scripts were not part of the build as I had a bit of trouble getting the right files in the right locations for everything to work at first.

It would make it more resilient if zone didn't explode when it gets a bad .pl file or one it cannot handle. Maybe I'll take a look at making a change since I have a file to test it with.

-f

Uleat
10-24-2012, 08:47 PM
When I upgraded from perl 5.10 to 5.12 (32-bit), I noticed that the ppm no longer installs DBI..only IO-stringy.

Would this change the way the code currently functions if DBI were incorporated into the main dll? If it were no longer supported, that would explain it too...