EVE Information Portal

 
3 Pages123Next page
 

Dev blog: Sleeping beauty - How one of the oldest bugs in EVE ...

First post
Author
C C P Alliance
#1 - 2017-02-15 15:17:57 UTC  |  Edited by: CCP Phantom
Sometimes the story of hunting down a bug (and fixing it), is so thrilling, so intriguing, that it simply has to be shared with you!

Enjoy CCP Snorlax' story of how he hunted down and fixed one of the oldest bugs in EVE. Have fun with the latest dev blog Sleeping beauty - How one of the oldest bugs in EVE got hunted down and resolved!

CCP Phantom - Senior Community Developer

WiNGSPAN Delivery Network
#2 - 2017-02-15 15:31:11 UTC
I love it when sneaky bugs get squashed. Great find!

Various projects I enjoy putting my free time into:

https://zkillboard.com | https://evewho.com

#3 - 2017-02-15 15:40:04 UTC
With all due respect to the blog author… http://9gag.com/gag/5533044

Two most common elements in the universe are hydrogen and stupidity. -- Harlan Ellison

Test Alliance Please Ignore
#4 - 2017-02-15 15:41:02 UTC  |  Edited by: Soldarius
I have seen this bug quite a few times. It seems most evident when the speed indicator stops updating. But shields, armor, or heat indicators not updating in the middle of a fight can get you killed and you would never even realize it. I know this has happened to me.

Glad to see such an insidious bug crushed beneath the boot heels of progress.

Hi Squizz.

http://youtu.be/YVkUvmDQ3HY

Caldari State
#5 - 2017-02-15 15:53:41 UTC
I can't pretend to even begin to inderstand half of what was discussed in this article... but the fact that CCP is willing to "show its work" and the in and outs of their work is amazing and one f the reasons I always keep coming back to EvE!!! thank you devs, I know that those in the know appreciate this kind of feedback and community engagement!!!
Nebula Rasa
#6 - 2017-02-15 16:19:20 UTC
Thanks for sharing and good hunting!
#7 - 2017-02-15 16:30:27 UTC
You know, there is a shampoo for bugs, it also stops the itching pretty quickly...
Goonswarm Federation
#8 - 2017-02-15 16:33:00 UTC
Maybe now non-coders will understand that finding a bug is sometimes a VERY challenging thing. Especially on something that is not easily re-producible.

I have seen this bug on my Drone window a few times, and I have also seen the "CCP is not even trying to fix it" complaints on forums and other places. Maybe this will make them realise that sometimes fixes are not easy or obvious.

I would LOVE to see the source for this game... can the devs maybe give a rough estimate on the amount of lines of code? (that would be interesting)

*chest salute* respect guys. Keep up the good work. :)

PS can you please add an "spontaneous feature" that adds 1 000 bill to all Caldari born pilots? Twisted

ehehehe

I'll be more enthusiastic about encouraging thinking outside the box when there's evidence of any thinking going on inside it.

Coalition of the Unfortunate
#9 - 2017-02-15 16:35:13 UTC
Kicked in the teeth by pointers.... You are now truly an elite programmer.

All the same, pretty nasty.

Then again, whoever wrote the original class didn't take much care to make it easy for themselves or their future colleagues, that's for sure...

It hurts my head to see void Synchro::RemoveSleeper( Heap &sleepers, ...) where it's being passed its own class member as a reference. Out of curiosity are there other heaps of sleepers in use or was this a nasty port of some C code?

Nice job finding it.
Caldari State
#10 - 2017-02-15 16:42:55 UTC
This is quite possibly the only MMO I know of that is willing to get technical and actually talk about what is going on. I know this article is entirely because after all that effort with the bug finally squashed the person responsible just wants to brag to the world and be admire. Well you know what, GOOD FOR YOU! This was such an amazing find and such hard work put into it you deserve all that praise. I can't tell you how often I'm programming something and after weeks of bug testing I finally fix a bug that was getting really irritating then I want to just tell anyone at all. Unfortunately, I don't really have any technically minded friends so I cant ever share my coding war stories with anyone. But as much as I love sharing them I also love reading them so please any developers from EVE don't be scared to show off every once in a while and brag about what you just did in the back end P
C C P Alliance
#11 - 2017-02-15 16:46:01 UTC
Hagika wrote:
You know, there is a shampoo for bugs, it also stops the itching pretty quickly...

I tried that on my laptop - I had to get a new one...

CCP Snorlax - Software Architect - Team RnB - @CCP_Snorlax - http://ccpsnorlax.blogspot.is/

C C P Alliance
#12 - 2017-02-15 16:47:06 UTC
Sentient Blade wrote:
Kicked in the teeth by pointers.... You are now truly an elite programmer.

All the same, pretty nasty.

Then again, whoever wrote the original class didn't take much care to make it easy for themselves or their future colleagues, that's for sure...

It hurts my head to see void Synchro::RemoveSleeper( Heap &sleepers, ...) where it's being passed its own class member as a reference. Out of curiosity are there other heaps of sleepers in use or was this a nasty port of some C code?

Nice job finding it.

Yes, there are two kinds of sleepers.

CCP Snorlax - Software Architect - Team RnB - @CCP_Snorlax - http://ccpsnorlax.blogspot.is/

Coalition of the Unfortunate
#13 - 2017-02-15 17:02:35 UTC
CCP Snorlax wrote:
Yes, there are two kinds of sleepers.


Ones that wreck your ships and ones that wreck your code? :-)
#14 - 2017-02-15 17:16:23 UTC
Central Omni Galactic Group
#15 - 2017-02-15 17:26:57 UTC  |  Edited by: Amarisen Gream
Great work CCP Development

But CCP Snorlax is still my favorite <3 of them all.

EDIT: CCP Snorlax, I have been lax in loading up my loglite files, trying to get back into the habit, so I hope you still get them and they help.

"The Lord loosed upon them his fierce anger All of his fury and rage. He dispatched against them a band of Avenging Angels" - The Scriptures, Book II, Apocalypse 10:1

#NPCLivesMatter #Freetheboobs

#16 - 2017-02-15 17:33:05 UTC  |  Edited by: Cade Windstalker
Wooooow. Massive congrats to you CCP Snorlax for that investigation and tenacity, and to CCP Karkur for writing that invaluable tasklet spawner. I do this stuff for a living myself and I can honestly see myself chasing something like this for ages and not understanding where things were going wrong (in fact my team is currently dealing with a bug that is just as infuriatingly inconsistent as this one was) so hats off to you for this fix. I know a lot of people this is going to make very very happy!

For all the non-technical folks here I'll try to summarize what was going wrong:

Imagine the main Eve process is like a bunch of guys watching a bunch of balls in a row.

Sometimes a guy picks up a ball and either puts it on a conveyor belt and it goes off to do things, or throws it out. When a ball is picked up a new ball gets put in its place when one is available.

Except whenever a guy picks up a ball he blinks right as he grabs it. This isn't a problem 99.9% of the time, because the balls aren't moving and he knows where the ball he's about to grab is.

Except sometimes, when an Eve Process Guy is about to pick up a ball and throw it out another Eve Process Guy picks it up and puts it on a conveyor belt to go do things.

If there's another ball available right then then a third Eve Process Guy may put that ball in the empty slot.

Then our Original Eve Process Guy, who is blinking and therefore can't see what he's grabbing, will grab the ball and throw it out.

That ball he threw out is your drone UI updates, or your HP update, or your module overheat updater.

CCP Snorlax patched the Eve Process Guys so they don't blink when grabbing balls anymore.
Central Omni Galactic Group
#17 - 2017-02-15 17:52:44 UTC
Cade Windstalker wrote:
Wooooow. Massive congrats to you CCP Snorlax for that investigation and tenacity, and to CCP Karkur for writing that invaluable tasklet spawner. I do this stuff for a living myself and I can honestly see myself chasing something like this for ages and not understanding where things were going wrong (in fact my team is currently dealing with a bug that is just as infuriatingly inconsistent as this one was) so hats off to you for this fix. I know a lot of people this is going to make very very happy!

For all the non-technical folks here I'll try to summarize what was going wrong:

Imagine the main Eve process is like a bunch of guys watching a bunch of balls in a row.

Sometimes a guy picks up a ball and either puts it on a conveyor belt and it goes off to do things, or throws it out. When a ball is thrown out a new ball gets put in its place when one is available.

Except whenever a guy picks up a ball he blinks right as he grabs it. This isn't a problem 99.9% of the time, because the balls aren't moving and he knows where the ball he's about to grab is.

Except sometimes, when an Eve Process Guy is about to pick up a ball and throw it out another Eve Process Guy picks it up and puts it on a conveyor belt to go do things.

If there's another ball available right then then a third Eve Process Guy may put that ball in the empty slot.

Then our Original Eve Process Guy, who is blinking and therefore can't see what he's grabbing, will grab the ball and throw it out.

That ball he threw out is your drone UI updates, or your HP update, or your module overheat updater.

CCP Snorlax patched the Eve Process Guys so they don't blink when grabbing balls anymore.


I am sure most of us don't like guys (blindly) grabbing our balls, but to each their own.

Sorry. Me is bad. But the example called for it.

"The Lord loosed upon them his fierce anger All of his fury and rage. He dispatched against them a band of Avenging Angels" - The Scriptures, Book II, Apocalypse 10:1

#NPCLivesMatter #Freetheboobs

Gallente Federation
#18 - 2017-02-15 18:04:07 UTC
Soldarius wrote:
I have seen this bug quite a few times. It seems most evident when the speed indicator stops updating. But shields, armor, or heat indicators not updating in the middle of a fight can get you killed and you would never even realize it. I know this has happened to me.

Glad to see such an insidious bug crushed beneath the boot heels of progress.

Hi Squizz.


Yeah, I almost always have the capacitor display disappears, the speedometer jams, or the drone window hangs errors... and once or twice I've had erroneous heat meter issues... once it was showing overheat levels of like -1,xxx,xxx,xxx% and the red bar was past the 100% mark.... whee... but yeah, mostly capacitor and speedometer.

Never had the shield/armor/hull displays freeze on me, and I am glad of it.
#19 - 2017-02-15 18:20:14 UTC
Thanks for sharing this! I didn't understand a lot of the details but what catched me at the end was that this bug might also have been the issue of "the overview not updating". That one I know well, as long as I play, which is long. Over the years I sometimes thought, this bug is annoying, why don't they care? I understand better now, it's not about ignoring a bug, but finding a very deep and hidden bug that is difficult to reproduce and to analyze in a complex code base. Software development is a human task, and it's not bad to sometimes show failure and success in the struggle against the single byte that doesn't do what you want it to do.
#20 - 2017-02-15 18:30:34 UTC
Quote:
99 little bugs in the code.
99 little bugs.
Take one down, patch it around.

117 little bugs in the code ...


Great story, enjoyed reading it :)
3 Pages123Next page
Forum Jump