This report covers hrev57802 through hrev57900.
Project status overview
Completed tasks
The goal of this phase was to stabilize GDB, making it suitable for debugging complex and
multi-threaded applications (including most Be API applications).
After clearing the first round of bug reports, the first revision of the GDB package is now online
on HaikuPorts.
When attempting to use the published package to work on Debugger, I found a second round of bugs,
resulting in the pending second revision of
the port. This version of GDB is now stable enough to attach to and debug a copy of itself.
intro
Hello, once again!
vid?
We made it! I previously stated that we had achieved playback,
but I never got to show it. So here it is, a short video
showing you that playback actually works.
So you don’t have to go and compile it, just to see it on
action.

outro
Main functionality is here! So, I believe that it may be
time to maybe push into the main branch.
Success! Now MiniBrowser displays things once again. Here is MiniBrowser showing https://review.haiku-os.org/

So, yeah, there’s still plenty of work left to do. Text isn’t rendered properly, keyboard and mouse support is missing, the window can’t be resized without MiniBrowser crashing, and it crashes when exited. I’ll take it one step at a time. Let’s make the mouse work! Then I can actually click on stuff. I think implementing that will be straightforward.
Project status overview
Completed tasks
The GDB port is feature-complete. A recipe has been submitted to HaikuPorts.
This took a bit longer than expected due to complexities in building the full GDB compared to
gdbserver - all of which will be covered in the technical details section
below. Subtle bugs revealed by invoking the debugger in different use cases delayed the project
even more.
Despite being off schedule, I believe delivering a fully-functional GDB along with comprehensive
documentation around it would benefit the community much more in the long run.
intro
Hello, once again! It’s been weeks since the last update, so here we go.
Good news, there is active development of the virtio sound driver for Haiku.
Key progress includes recording on the device and improvements.
buffer exchange redesign
As per the last blog post:
We still specify 2 playback buffers, but incremented to 16,384 frames per
buffer, to handle audio streams.
struct multi_buffer_info {
// [...]
bigtime_t played_real_time;
bigtime_t played_frames_count;
// [...]
int32 playback_buffer_cycle;
bigtime_t recorded_real_time;
bigtime_t recorded_frames_count;
// [...]
int32 record_buffer_cycle;
// [...]
};
I messed up a lot during these last two weeks. A certain bug
appeared, and it was a tricky one, not even appearing all the time. As far
as I’m concerned, it looks like I should not have gone playback-first and
recording-last.
Another month has gone by and we’re entering now the last month of GSoC! So, what did I get done this month?
What works now that didn’t work before?
- The driver supports now the 16 IOCTL calls defined by the driver, which means that
both the frontend and the VMX backend are complete.
- EPT tables support: Much of my previous post content was about EPT tables and all the
problems I was having to get them working. Now support for them is complete and it works!
The EPT page fault handler only consists of one call to Haiku’s page fault handler, since it’s
everything integrated into Haiku’s virtual memory subsystem.
- libnvmm’s test suite is ported and all tests pass.
- QEMU (latest version from Haikuports) is capable, after applying a patch, of detecting NVMM support
and compile. It doesn’t work, sadly, something breaks after executing a few chunks of any given VM.
However, I didn’t make any progress on the SVM backend (which is still at a very early state). I’m beginning to realise that this is one thing I won’t be able to finish during the coding period.
I probably have all the pieces needed to port it but I have to look at the differences between SVM and VMX (there are a few) and that will probably take some time I might not have in the end.
Also, it’s worth to mention that despite getting more and more stuff working the list of TODO things keeps getting longer and longer.
Things on that list are improvements on performance and behavior (NVMM’s kidnaps the CPU which is probably not the best behavior if we want the system to be responsive, …). None of them is very long or difficult but there are a lot of those little things to do so they will end up requiring a considerable amount of time.
Nephele’s report:
This weekend in Berlin PulkoMandy and I attended an Coding sprint in Berlin to work on Renga, the XMPP client for Haiku.
On the first day we got settled first, had a nice introductory round and worked a bit on Renga. Everyone else seemed to want to work on end to end encryption, and then you have us: PulkoMandy improving the multi user chat experience, and me␚ deleting the settings menu. After all, quite a productive start!
WebKit wasn’t trying to draw anything to the screen. Turns out, it wasn’t aware that it was visible. No use drawing a web page when you’re invisible, right? Well, I told it that it is visible, and now it’s trying to draw to the screen. Of course, it crashes while trying to do so. It hasn’t tried to draw to the screen in ages. Everything is bit rotted!
So far, it looks like this will mostly be a collection of minor tasks. Nothing worthwhile to write about here yet, at least. If I’m lucky, it will stay that way and we can have a nice web page displayed by WebKit pretty soon.
This report covers hrev57754 through hrev57801.