Visibility Jam. July 19-21, 2024. See the results.

Crawling Closer to Prerelease

Jeremiah Goerdt
We're not quite there yet, but it's getting closer by the day!

In case you aren't aware, you can follow along with what has been done and what needs on over on the Lysa Trello board.

Once in a while you'll see a pink tag on the board to denote a bug, but so far they have quickly disappeared after discovery. I'm sure that's mainly because I'm the only one using Lysa. I can't wait for the angry bug reports to come pouring in after prerelease ;-)

Recent Changes

The biggest change has been going from storing a bunch of data about the debuggee to getting the same data on the fly. Lysa had some serious memory issues when it was doing the former.

PIEs caused a few headaches, but it turns out the solution was pretty simple.

Debug ranges (an entry that can span across multiple chunks of code) are handled now, but this still needs to be added for compilation units.

Lysa is starting and stopping gracefully without a problem. This will provide some interesting opportunities for having multiple debug instances going simultaneously and other black magic. I'm excited about this one.

Near Future Targets

The compilation unit ranges will be a breeze.

Function pointers shouldn't cause any problems.

Pointer retrieval bug might be a bit of a PITA, but I have a hunch on why it's happening.

Bigger Hurdles

Memory management needs a significant overhaul, and by overhaul I mean there should be some management of memory :-P

Stepping through external libs is a core feature. I'm hoping it won't take more than a couple days, but who the hell knows.

And the big bastard that needs to be handled is stack traces. I'm not gonna lie, I've been avoiding this one for some time now.

That's it for now...

If I missed anything, be sure to let me know here, on Twitter, via email, or just stop by the stream and yell at me live.

Thanks for reading. You stay classy.


I missed the PIE solution after watching at least two whole streams of you working on it! What ended up working?
I missed the PIE solution after watching at least two whole streams of you working on it! What ended up working?

Just a simple difference between what's in the program header and what the ELF header says. After that, it was just making the API assume relative addresses and always add the offset (which is 0 in the non-PIE case).