These forums have been archived and are now read-only.

The new forums are live and can be found at https://forums.eveonline.com/

EVE Information Portal

 
  • Topic is locked indefinitely.
Previous page123Next page
 

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

First post
Author
Alexander Bor
Polaris Global
#21 - 2017-02-15 18:40:50 UTC
Nice job CCP and good thing of CCP Snorlax to share some details of the way EVE goes through creation. Smile
Hvitulf
Sebiestor Tribe
Minmatar Republic
#22 - 2017-02-15 18:42:50 UTC
Had seen this bug happen countless times, mostly when I was in my orca when I would call/recall combat drones swapping between combat and salvage drones. I've bug reported it and thought maybe it was never going to get fixed. Great find on this sneaky little bug!
Stragak
#23 - 2017-02-15 19:52:47 UTC
OMG AMAZING!!! I love that you guys were able to track down this bug down. And made reference to that the other bugs might be based on the same thing!!!! Best of luck in bug hunting!

"Oh look, the cat is sitting in the litter box and pooping over the side again" every time we go through these "rough patches". In good humor, and slight annoyance, Boiglio   https://forums.eveonline.com/default.aspx?g=posts&t=238130&p=82

Gareth deKunnis
Absolute Order
Absolute Honor
#24 - 2017-02-15 20:13:56 UTC
Well done!
Elegbara
White Wolf Enterprises
Harmonious Ascent
#25 - 2017-02-15 20:34:52 UTC
Fascinating read.

Also I've actually tried to read the code and there's definitely something wrong in the Synchro::Tick snippet. The for loop seems corrupted.

Open your eyes. And awaken.

Magnus Coleus
Republic Military School
Minmatar Republic
#26 - 2017-02-15 20:57:58 UTC
Interesting, but with the weird punctuation (or lack thereof) and confusion between "it's" and "its", some parts of the explanation are as hard to follow as the original code. P

Cade Windstalker
#27 - 2017-02-15 21:09:25 UTC
Magnus Coleus wrote:
Interesting, but with the weird punctuation (or lack thereof) and confusion between "it's" and "its", some parts of the explanation are as hard to follow as the original code. P



If you'd just been staring at python code for however many weeks this took you'd probably punctuate like that too Lol
FearlessLittleToaster
Federal Navy Academy
Gallente Federation
#28 - 2017-02-15 21:15:37 UTC
I'm a long way from being a technical person and I still enjoyed this. You made it just understandable enough that even somebody who only grasps the outlines of coding could follow. Well done for that.

I do have a request. If you find other bugs that stem from this append them to this dev-blog. I'd love to read how many other things it screwed up through the game.
Zathus Alexander
TheGSpoters
#29 - 2017-02-15 21:20:45 UTC
Awesome job team! I used this as an example today when my sales team complained about a bug we found in some code... They assume debugging is like proofing copy, like you are supposed to be able to simply read the code and detect flaws in the logic.

It was nice to point at a large company with multiple developers having similar issues, thanks for the transparency.

Lothar Mandrake
Mandrake Executor Corp
Mandrake Alliance
#30 - 2017-02-15 21:29:48 UTC
CCP Snorlax - Beautiful job on finding and rewriting the code.

That was a needle in the haystack as the original looks messy but would never trigger as a problem (at least to me).

I hope CCP realizes and appreciates your dedication and expertise in hunting this ghost down and rewriting it. Not many programmers would have had the patience that you did. Well done!

P.S. If you ever need a job, just let me know.......... :-)

-

Thoirdhealbhach
Liga der hessischen Gentlemen
#31 - 2017-02-15 21:35:27 UTC
Elegbara wrote:
Fascinating read.

Also I've actually tried to read the code and there's definitely something wrong in the Synchro::Tick snippet. The for loop seems corrupted.


Yep, seems like the last third of the for command got eaten up during copy&paste.

Anyhow, my sympathies, I've been chasing some bad reference counting myself for the better part of last month.
Sentient Blade
Crisis Atmosphere
Coalition of the Unfortunate
#32 - 2017-02-15 21:43:39 UTC
Sentient Blade wrote:
All the same, pretty nasty.


Oops. Just quoting myself as when I was reading through this again I realised my "pretty nasty" comment could be taken incorrectly.

I meant it was a pretty nasty bug.
CCP karkur
C C P
C C P Alliance
#33 - 2017-02-15 22:20:48 UTC
Kolmogorow wrote:
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.

We are pretty sure this bug has been causing some overview issues, but there might very well be other issues that remain, but we are happy to get this at least out of the way Smile

Over the years, we have spent a lot of time on overview and HUD issues, reading the code, trying to repro, adding logging but not gotten very far with it. It's especially tricky because we often don't know what else people have been doing when those weird things happen or what else had been happening.
The drone case was similar, we knew it was happening but just couldn't repro it ourselves. We had spent days on looking into it (not ignoring it like many thought), but based on reports and videos we had, we saw details in the drone window (what had and had not updated) that made no sense, the code just "couldn't" fail in that way.
But the good thing about the drone bug was that we had a decent idea under what circumstance it happened, so I ended up just sitting down, determined to repro like players were reporting... yeah, it probably took me like an hour and half to break it for the first time, but well worth in the end Big smile

CCP karkur | Programmer | Team Five 0 | @CCP_karkur

Gilion Braveheart
The Scope
Gallente Federation
#34 - 2017-02-15 22:58:00 UTC
What?!? A game company ok with sharing code?!? *gasp*
I have to say I was kinda surprised, I've been trying to teach myself game design and while I've only done simple coding problems, I always though games as complex as EVE would have equally complex code, but the code shown looks nice and simple. Maybe there's hope for me yet :)
Illiana ShadowGlade
BlackStar Military Corp
#35 - 2017-02-15 23:03:32 UTC
This was an awesome read. I did IT in high school and got paid to run the the servers there over the summers after I graduated and trying to find code was always a pain.

Have you guys tried using the rubber ducky method?
Grab a rubber ducky.
Sit it on your desk/keyboard what have you...
Explain to the duck the code.
Two or three times if you have to.
Eventually it'll hit you like a truck and you will probably throw the duck across the room because the 'stupid complex problem' has a simple solution, or it's something you never second guessed until that duck just gives you it's dead placid stare.
Specific Alduin
Hard Knocks Inc.
Hard Knocks Citizens
#36 - 2017-02-15 23:14:17 UTC
I have been having this problem so much recently, I am ecstatic that it finally got fixed!!!
Kolmogorow
Freedom Resources
#37 - 2017-02-15 23:25:37 UTC
CCP karkur wrote:
We are pretty sure this bug has been causing some overview issues, but there might very well be other issues that remain, but we are happy to get this at least out of the way Smile

Over the years, we have spent a lot of time on overview and HUD issues, reading the code, trying to repro, adding logging but not gotten very far with it. It's especially tricky because we often don't know what else people have been doing when those weird things happen or what else had been happening.
The drone case was similar, we knew it was happening but just couldn't repro it ourselves. We had spent days on looking into it (not ignoring it like many thought), but based on reports and videos we had, we saw details in the drone window (what had and had not updated) that made no sense, the code just "couldn't" fail in that way.
But the good thing about the drone bug was that we had a decent idea under what circumstance it happened, so I ended up just sitting down, determined to repro like players were reporting... yeah, it probably took me like an hour and half to break it for the first time, but well worth in the end Big smile


You and your team deserve an extra beer now, or two. Smile
Taryn Earendil
Trauma Ward
#38 - 2017-02-16 01:40:00 UTC
I am a C++ newb. When I'm doing systems stuff, I use Rust. Mostly, because I'm into being a hipster developer...... but my question is with this RemoveSleeper function:

void Synchro::RemoveSleeper( Heap &sleepers, Sleeper &sl )
{
    SleeperIt it;
    for( it = sleepers.begin(); it != sleepers.end(); ++it )
    {
        if( it->channel == sl.channel )
        {
            break;
        }
    }

    if( it != sleepers.end() )
    {
        //Ok found us.  Let's delete us.
        sleepers.Remove( it );
        Py_DECREF( sl.channel );
    }
}


Would this be a more succint way to do it?

void Synchro::RemoveSleeper( Heap &sleepers, Sleeper &sl )
{
    SleeperIt it;
    for( it = sleepers.begin(); it != sleepers.end(); ++it )
    {
        if( it->channel == sl.channel )
        {
            //Ok found us.  Let's delete us.
            sleepers.Remove( it );
            Py_DECREF( sl.channel );
            break;
        }
    }
}
TheSmokingHertog
Julia's Interstellar Trade Emperium
#39 - 2017-02-16 04:30:35 UTC
07

"Dogma is kind of like quantum physics, observing the dogma state will change it." ~ CCP Prism X

"Schrödinger's Missile. I dig it." ~ Makari Aeron

-= "Brain in a Box on Singularity" - April 2015 =-

Branquinha
Thirtyplus
Goonswarm Federation
#40 - 2017-02-16 08:13:20 UTC
(slow clap)
(/bows to magnificence of analysis)

You must have felt pretty good after that one! Cool

Just out of curiosity, aprox how many hours until you found it? And how many "I'm not finding anything breaks!" ?

Previous page123Next page