|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Development::Bug Reports Post detailed bug reports and what you would like to see next in the emu here. |
|
|
|
06-23-2009, 04:37 AM
|
Dragon
|
|
Join Date: Dec 2008
Location: Tennessee
Posts: 654
|
|
Rev706
Ran into several problems, first off in Rev705 everything would compile and run just fine but only the general tab in aa's was showing up in game even though the aa tables are in the database. So I recompiled with Rev706 and now I get a nasty zone.exe crash at the character select screen when attempting to actually enter the game world.
No errors show in the log files but here is the debug and app crash information:
'Zone.exe': Loaded 'C:\Windows\SysWOW64\WSHTCPIP.DLL'
'Zone.exe': Loaded 'C:\Program Files (x86)\EQEmu\EMuShareMem.dll', Binary was not built with debug information.
The thread 'Win32 Thread' (0xfd has exited with code 0 (0x0).
Unhandled exception at 0x004c2f7c in Zone.exe: 0xC00000FD: Stack overflow.
The program '[3388] Zone.exe: Native' has exited with code 0 (0x0).
Problem signature:
Problem Event Name: APPCRASH
Application Name: zone.exe
Application Version: 0.0.0.0
Application Timestamp: 4a409006
Fault Module Name: zone.exe
Fault Module Version: 0.0.0.0
Fault Module Timestamp: 4a409006
Exception Code: c00000fd
Exception Offset: 000c2f7c
OS Version: 6.0.6002.2.2.0.256.1
Locale ID: 1033
Additional Information 1: fd00
Additional Information 2: ea6f5fe8924aaa756324d57f87834160
Additional Information 3: fd00
Additional Information 4: ea6f5fe8924aaa756324d57f87834160
|
|
|
|
06-23-2009, 11:41 AM
|
Developer
|
|
Join Date: Apr 2009
Location: USA
Posts: 478
|
|
Could you provide the last 20 lines or so of eqemu_debug_zone.log. Thanks.
|
|
|
|
06-23-2009, 11:52 AM
|
Developer
|
|
Join Date: Apr 2009
Location: USA
Posts: 478
|
|
Actually, looking through the changes, I'm guessing the problem is in one particular portion of the changes. This patch removes those changes. Please apply this patch, recompile and then let us know if the zone.exe crash still occurs. Thanks.
Code:
Index: common/MiscFunctions.cpp
===================================================================
--- common/MiscFunctions.cpp (revision 706)
+++ common/MiscFunctions.cpp (revision 705)
@@ -59,10 +59,6 @@
#include <errno.h>
#endif
-#ifndef va_copy
- #define va_copy(d,s) ((d) = (s))
-#endif
-
void CoutTimestamp(bool ms) {
time_t rawtime;
struct tm* gmt_t;
@@ -151,7 +147,7 @@
int MakeAnyLenString(char** ret, const char* format, ...) {
int buf_len = 128;
int chars = -1;
- va_list argptr, tmpargptr;
+ va_list argptr;
va_start(argptr, format);
while (chars == -1 || chars >= buf_len) {
safe_delete_array(*ret);
@@ -160,8 +156,7 @@
else
buf_len = chars + 1;
*ret = new char[buf_len];
- va_copy(tmpargptr, argptr);
- chars = vsnprintf(*ret, buf_len, format, tmpargptr);
+ chars = vsnprintf(*ret, buf_len, format, argptr);
}
va_end(argptr);
return chars;
@@ -174,7 +169,7 @@
*strlen = 0;
int chars = -1;
char* oldret = 0;
- va_list argptr, tmpargptr;
+ va_list argptr;
va_start(argptr, format);
while (chars == -1 || chars >= (sint32)(*bufsize-*strlen)) {
if (chars == -1)
@@ -188,8 +183,7 @@
memcpy(*ret, oldret, *strlen);
safe_delete_array(oldret);
}
- va_copy(tmpargptr, argptr);
- chars = vsnprintf(&(*ret)[*strlen], (*bufsize-*strlen), format, tmpargptr);
+ chars = vsnprintf(&(*ret)[*strlen], (*bufsize-*strlen), format, argptr);
}
va_end(argptr);
*strlen += chars;
Index: common/debug.cpp
===================================================================
--- common/debug.cpp (revision 706)
+++ common/debug.cpp (revision 705)
@@ -20,10 +20,6 @@
#endif
#include "../common/MiscFunctions.h"
-#ifndef va_copy
- #define va_copy(d,s) ((d) = (s))
-#endif
-
static volatile bool logFileValid = false;
static EQEMuLog realLogFile;
EQEMuLog *LogFile = &realLogFile;
@@ -148,16 +144,13 @@
fprintf(fp[id], "%04i [%02d.%02d. - %02d:%02d:%02d] ", getpid(), newtime->tm_mon+1, newtime->tm_mday, newtime->tm_hour, newtime->tm_min, newtime->tm_sec);
#endif
- va_list argptr, tmpargptr;
+ va_list argptr;
va_start(argptr, fmt);
- if (dofile) {
- va_copy(tmpargptr, argptr);
- vfprintf( fp[id], fmt, tmpargptr );
- }
+ if (dofile)
+ vfprintf( fp[id], fmt, argptr );
if(logCallbackFmt[id]) {
msgCallbackFmt p = logCallbackFmt[id];
- va_copy(tmpargptr, argptr);
- p(id, fmt, tmpargptr );
+ p(id, fmt, argptr );
}
if (pLogStatus[id] & 2) {
if (pLogStatus[id] & 8) {
@@ -211,21 +204,17 @@
time( &aclock ); /* Get time in seconds */
newtime = localtime( &aclock ); /* Convert time to struct */
- va_list tmpargptr;
-
if (dofile) {
#ifndef NO_PIDLOG
fprintf(fp[id], "[%02d.%02d. - %02d:%02d:%02d] %s", newtime->tm_mon+1, newtime->tm_mday, newtime->tm_hour, newtime->tm_min, newtime->tm_sec, prefix);
#else
fprintf(fp[id], "%04i [%02d.%02d. - %02d:%02d:%02d] %s", getpid(), newtime->tm_mon+1, newtime->tm_mday, newtime->tm_hour, newtime->tm_min, newtime->tm_sec, prefix);
#endif
- va_copy(tmpargptr, argptr);
- vfprintf( fp[id], fmt, tmpargptr );
+ vfprintf( fp[id], fmt, argptr );
}
if(logCallbackPva[id]) {
msgCallbackPva p = logCallbackPva[id];
- va_copy(tmpargptr, argptr);
- p(id, prefix, fmt, tmpargptr );
+ p(id, prefix, fmt, argptr );
}
if (pLogStatus[id] & 2) {
if (pLogStatus[id] & 8) {
@@ -306,12 +295,10 @@
}
bool EQEMuLog::writeNTS(LogIDs id, bool dofile, const char *fmt, ...) {
- va_list argptr, tmpargptr;
+ va_list argptr;
va_start(argptr, fmt);
- if (dofile) {
- va_copy(tmpargptr, argptr);
- vfprintf( fp[id], fmt, tmpargptr );
- }
+ if (dofile)
+ vfprintf( fp[id], fmt, argptr );
if (pLogStatus[id] & 2) {
if (pLogStatus[id] & 8)
vfprintf( stderr, fmt, argptr );
|
|
|
|
06-23-2009, 12:22 PM
|
Developer
|
|
Join Date: Apr 2009
Location: USA
Posts: 478
|
|
Actually, before you try that patch, try rev 707. I forgot there was a slight error in 706 that might have undesirable consequences.
|
06-23-2009, 04:45 PM
|
Dragon
|
|
Join Date: Dec 2008
Location: Tennessee
Posts: 654
|
|
Guess that silent error was the culprit. At Rev708 the crash bug is gone so whatever change was made worked. Thanks for looking into it the problem.
|
|
|
|
06-23-2009, 05:43 PM
|
|
Developer
|
|
Join Date: Aug 2006
Location: USA
Posts: 5,946
|
|
The issue with AAs only showing up on the general tab only happens in SoF. That was caused by the changes I made a few revisions ago that make it so SoF can use the same table as Titanium, but have a few different settings that it needs. The work on the AA tables is not finished yet, so there are sure to be changes. Once the AA stuff is finalized, there will definitely be an update to give the final table settings. The best way to get the correct settings will probably be to get them from PEQ once they are all done.
For now, you can either set AAs in SoF to go to separate tabs by editing the table yourself, or you can run the SQL in this post to replace your table with one that has some updates for SoF, including dividing some up to different tabs as well as removing all of the unknown DB string messages in the AA window:
http://www.eqemulator.net/forums/sho...5&postcount=22
If you want to update your table manually because you have custom AAs, you can do that too. The important settings are in the sof_type field, which decides which tab to put the AA in, and also in the clientver field, which decides which clients should show that particular AA.
|
|
|
|
06-23-2009, 06:22 PM
|
Dragon
|
|
Join Date: Dec 2008
Location: Tennessee
Posts: 654
|
|
Thanks for the update Trevius. I knew aa's were being worked on I just did not expect to see some of the problems that showed up. Having aa's duplicate into two seperate rows once you train them and everything showing as max level value of one was really really weird.
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -4. The time now is 11:23 AM.
|
|
|
|
|
|
|
|
|
|
|
|
|