Oct 31 2013, 5:58 am
|
|
We've stuck with a server for a while, one which didn't require me actually installing libstdc++6 or ia32. How do I check if they're installed and the version of Ubuntu we're using?
|
To check your version of Ubuntu:
lsb_release -a To check package versions: dpkg -s [package name] |
Here's all the related version numbers:
Ubuntu: 13.04 libstdc++6: 4.7.3-lubuntul libc6: 2.17-0ubuntu5 libgcc1: 1:4.7.3-1ubuntu1 ia32-libs: 20090808ubuntu36 |
As I said, I lack information on this bug. The crash log you got doesn't conform to actual offsets in the libbyond.so file, which severely limits my ability to figure out what went wrong. I will say that the DecRefCount issue looks very similar to the old crash, but given that it was resolved by changing something about the build, I'm not sure where to go from here. At a minimum I think I need something I can trace.
Given that Eternia seems to be the only game exhibiting such an issue anymore, there also seems to be a very game-specific trigger. Unfortunately I think that'll be hard to nail down. Do you track your code changes by date, where you could possibly pin down any changes you made just before the issue reappeared? This seems to have been re-triggered by something in the code, even though a BYOND bug obviously must be in play also. |
We do track code changes by date through version control, but the problem is we cannot directly identify when the crashes started happening. They seem to happen every time we upgrade the BYOND version our game runs off; whether it be from 498 to 499 or to 500+.
And I think I can't really provide much else information than what's already been provided. If you want to browse the code itself you're welcome to ask and either Writing A New One or myself can grant you access to our SVN repo. |
In response to Lummox JR
|
|
Lummox JR wrote:
I will say that the DecRefCount issue looks very similar to the old crash, but given that it was resolved by changing something about the build, I'm not sure where to go from here. I don't believe the crashing ever did stop with Eternia... It just became less frequent. As for the other projects, I'm interested to learn if the crashing did end or if it's still persisting -- so please post with that information if any of you guys from the old threads are reading this. We will keep posting any log crashes here, and like Doohl said, if you require access to the code, that can be arranged. |
In response to Lummox JR
|
|
Backtrace for BYOND 501.1216 on Linux: Backtrace for BYOND 501.1216 on Linux: Fri Nov 1 11:52:54 2013 Backtrace for BYOND 501.1216 on Linux: |
In response to Writing A New One
|
|
Writing A New One wrote:
As for the other projects, I'm interested to learn if the crashing did end or if it's still persisting -- so please post with that information if any of you guys from the old threads are reading this. 100% fixed for me. |
I was working closely with several users who had the problem. Eternia seems to be an outlier. Obviously there's still a bug in play for Eternia because those string deletion errors and crashes are not right, but it's being triggered a different way.
|
Please let us know if there's anything we can do to help resolve the crashing. Here are more logs nonetheless:
Backtrace for BYOND 501.1216 on Linux: Sat Nov 2 23:45:30 2013 Backtrace for BYOND 501.1216 on Linux: Mon Nov 4 18:56:23 2013 Backtrace for BYOND 501.1216 on Linux: Wed Nov 6 19:54:36 2013 Backtrace for BYOND 501.1216 on Linux: Sat Nov 9 23:55:37 2013 Backtrace for BYOND 501.1216 on Linux: Sun Nov 10 18:28:15 2013 Backtrace for BYOND 501.1216 on Linux: Wed Nov 13 17:58:15 2013 Wed Nov 13 21:09:33 2013 Backtrace for BYOND 501.1216 on Linux: Thu Nov 14 01:34:17 2013 |
I may actually be onto something. Your newer logs don't show the offset problems I saw in the past and I've traced two of the crashes to routines related to icons math.
In one case, a datum is being looked at for an Appearance, probably for the sake of adding it to an overlay, but the datum must be invalid or null. I've added a sanity check for that case. In another case, the internal object used to handle /icon is at fault, and another sanity check will help. But these are Band-Aids. The real problem is whatever is causing this situation. (Obviously, the bad string ref in DecRefCount is an issue too.) Given the fact that icons are showing up as the culprits in two of these cases, I suspect some foul play in one of the icon manipulation routines you're using, or in the way you're using them. It would be most helpful if I could get a look at any code that handles icon generation, overlay building, and character saving. Specifically just that code--there's no realistic way I'd be able to find all of that in a code base as large and unfamiliar as Eternia. If you can gather up those routines, please send me copies of them (and accompanying explanations of what they do, if you would) at [email protected]. |
In response to Lummox JR
|
|
There's a tremendous amount of code that would fall under "icon generation, overlay building, and character saving." We can of course provide it, but it will take time to round up all the code that falls under this umbrella, and we'd wind up sending you quite a lot of code to sort through.
Is there perhaps something you can tell us to narrow down what we can show you? Code that involves /image (image()) or /icon types, or maybe legacy code that uses Blend()? All code that uses overlay arithmetic or just ones that add using the image() proc? |
I sent WANO an email on this last night, but so you know too: The crash reports he posted all show that image() is the common denominator. I can't be sure it's actually causing the problem so much as triggering it, but with typical heap corruption issues I should be seeing crashes in other parts of the code too.
There appear to be two crash cases: One is where it's crashing when attempting to access a bad datum ref--which from context, I believe to have been an /icon. The other is where it's crashing when attempting to access a bad internal object used to handle /icon. Both of these however are called by image() or new/image() (which are really the same). |
The most heavy usage of /image in Eternia is probably the targeting indicators and user-specific quest stuff. Moreso the target stuff though.
|
Apologies for the delay in getting the code to you. I'll try to have it as soon as possible (assuming you still need it)!
|
How's this going? Should I continue to post error reports, or aren't they of much use?
Thanks for looking into the issue, and best of luck with any further debugging. I hope it's not consumed too much time. |