Using Valgrind to find memory problems - Part Four

Now that I had some experience dealing with memory leaks, I decided to try to reduce the memory leaks present in MoarVM. After a few quick wins, I found a situation where MVMCallsite objects referred to by MVMCompUnit objects MVMCallsite objects are the MoarVM representation of Perl 6 signatures, and MVMCompUnit objects represent the result of a body of source code being compiled MVMCallsite objects are the MoarVM representation of Perl 6 signatures, and MVMCompUnit objects represent the result of a body of source code being compiled were not being cleaned up when their parent compunit is collected. I took it upon myself to plug this leak!

Read More...
Posted on 2015-12-27

Address Your Sanity with AddressSanitizer - Part Three

It took a while for me to get back in the swing of things after I returned from Japan, but I eventually got there. The first step to fixing that use-after-free bug was finding out which test was triggering the failure, which meant building a MoarVM with address sanitation (often referred to as ASan) support.

Read More...
Posted on 2015-12-21

Hunted By a Leak - Part Two

In my previous post, I talked about a slowdown in a Perl 6 process I was fixing, and how I discovered that the cause was really a memory leak. Instead of looking for the memory leak in Proc::Async, I decided to look in run, which also spawns children and exhibited the leak, but works in a synchronous manner. To find the Perl 6 code that was causing the leak, I wrote some code that would call run repeatedly:

Read More...
Posted on 2015-12-15

Tracking Slowdowns in Creating Child Processes - Part One

When I use Perl 5, I do a lot of shelling out to external commands; after all, that's what Perl is good at! So it should come as no surprise that I do the same with Perl 6, which means a lot of the time and effort I spend helping with Perl 6 is improving the interaction with external commands.

Read More...
Posted on 2015-12-08

Intermediate SQL: WHERE vs HAVING

Recently, at Work I gave an introductory SQL tutorial. Since the purpose of the tutorial was to teach SQL for the purpose of answering questions about groupings of data, the tutorial ultimately reached a discussion of WHERE versus HAVING. I thought I'd share the explanation I used in case others felt confused why SQL has two keywords that serve such a similar function.

Read More...
Posted on 2015-04-30