Howdidudothat Howdidudothat

[FIXED]Minidumps in Beta 3

[FIXED]Minidumps in Beta 3

So far I have had 3 minidumps in Beta 3.  It only occurs if I don't restart after the last game and play another game.

http://www.fileden.com/files/2008/8/7/2039910/Sins-v1.096-2008-10-14-21-24-30-5860-5332.dmp http://www.fileden.com/files/2008/8/7/2039910/Sins-v1.096-2008-10-14-21-29-49-6496-7260.dmp http://www.fileden.com/files/2008/8/7/2039910/Sins-v1.096-2008-10-18-20-52-34-9880-10016.dmp

 

4,234 views 35 replies
Reply #26 Top

Yes, they are gone (atleast the ones caused by playing a game and then playing another one without restarting). Your save games and observation of when they seem to occur were key to tracking it down. Thanks :)

Reply #27 Top

SWEEEEEEEEEEEET !  good job, btw

Reply #28 Top

Hmm, maybe we are misunderstanding each other here. I mean that "\0" is a string, which is entirely different from the null character '\0'. "\0" as a string takes at least two bytes but '\0' as a null character is only one byte long. The null character ('\0') is therefore used as a string terminator, but the string "\0" just means a '\' character followed by the number '0' and does not have any special meaning to a string. Hence strcmp/strncmp string compare (and such string routines) would look at it differently. Perhaps you can try strcmp(x, "") instead, although I think ('\0' == x[0]) is much faster/lighter.
End of quote

If I had wanted to compare against the string slash zero (\0) I would have said strcmp slash slash zero (\\0) to escape the slash... It is like printing a slash and a n (characters \ and n) as opposed to a newline char....

In C# - saying x == null tests if the object is null. You actually need to say x == String.Empty to test for an empty string ("").

I don't dispute the object-ness + methods idea of OO. But let me ask a question (pls excuse the high simplification, extrapolate to your fav OO-methods/etc):

str1 = "Hello";

str2 = "World";

str3 = str1 + str2; // which == "HelloWorld"

How did the language/compiler/etc concatenate/join/append/etc the two strings? Chances are they malloc/realloc-ed etc new/more space on str1 then copied the bytes from str1 and/or str2 etc etc. Bottom line is, the strings are still represented as an array at a low level. So the fundamental difference of the string "\0" vs the character '\0' is still there.
End of quote

I think the compiler would have converted str3 = Str1 + str2 into a stringbuilder class implicitly - as i said. Strings are immutable in C#. How the StringBuilder class does its thing - I don't know. But that is the point of it - it is hidden and abstracted away from me - a key concept in OO.

One other potential issue with C++ strings vs .NET strings is Unicode - 2 bytes per char instead of ascii - 1 Byte per char

Reply #29 Top

Oh yeah - good news on the lack of mini-dumps in the new version...

looking forwards to getting onto 1.1

Reply #30 Top

This is great news.  The minidumps are fixed and v1.1 is coming out the 18th.  I need to call in a vacation day...

Reply #31 Top

If I had wanted to compare against the string slash zero (\0) I would have said strcmp slash slash zero (\\0) to escape the slash... It is like printing a slash and a n (characters \ and n) as opposed to a newline char....
End of quote

OK, fair enough.. I just find it strange to use a string compare routine to check for a single character - what more the first character in the string.. Much faster to just look into the first array index x[0]..

I remember the last time I had to add the special character '\0' as a legitimate part of a string (something to do with SMTP authentication) and that was a pain, because all the string routines (from printf to strlen) kept stopping at the first \0 and some workarounds directly accessing the string array were needed. So I honestly don't know what happens when you strcmp(x, "\0") :) I think it depends how strcmp will treat the constant string "\0" itself ( \0\0 ?).. Maybe it would work after all, or it could work for most cases but fail at special cases involving the '\0' character if it were really needed as part of the string..

In C# - saying x == null tests if the object is null. You actually need to say x == String.Empty to test for an empty string ("").
End of quote

OK, I see your point.. The object is invalid/uninited/yadda.. Yes, different from empty string.

char *x;

if ((null != x) && ('\0' == x[0])) { printf("Valid, but empty string!"); }

:)

How the StringBuilder class does its thing - I don't know. But that is the point of it - it is hidden and abstracted away from me - a key concept in OO.
End of quote

Well, truthfully, neither do I. And I do agree, I don't want to know the specifics.. But I would hazard a guess that it involves allocating/reallocating memory and copying the data from one place to another. Which is sort of my point, that while I believe such advances are very helpful (like your point about Unicode strings) but as programmers (especially the newer, younger ones), we really should know "more" about the lower "hidden" layers to understand what they do because they form the foundation on which we build other apps/code. The abstraction has made these sorts of programmers, well, ... Ask them which sort algorithm is used in PHP/Perl sort.. is it B-tree or Bubble? They'll give you a very funny look.. :P

 

Reply #32 Top

I am guessing the mini-dumps are gone if they are going 1.1 release on the 18th, but i am not an insider, just a newbie that is making a guess. But it is wonderful news if it is.

-Teal

 

Reply #33 Top

I'm never willing to say all minidumps are gone because in the world of software, that is impossible. I am willing to say that the specific crashes caused by the situation identified in this thread are fixed.

Reply #34 Top

Yep...Blair posted on #26 they think they got em.  There is also a [FIXED] at the beginning of the thread.

Reply #35 Top

I'm never willing to say all minidumps are gone because in the world of software, that is impossible. I am willing to say that the specific crashes caused by the situation identified in this thread are fixed.
End of quote

Ahh - the irony of Software Engineering. You can never prove the absence of a bug, only the precence of one...

"I certify that this program contains no KNOWN bugs..." :D