OpenBSD Journal

c2k15: jeremy@ on ruby work, kernel and libc bugs, ports progress

Contributed by pitrh on from the do they serve pufferfish dept.

Our series of c2k15 hackathon reports continues with this entry from Jeremy Evans (jeremy@):

I had a great time at c2k15 and got a lot of work done.

The first major project I worked on was switching the default version of ruby in the ports tree from 2.1 to 2.2. That's a fairly simple change, but it requires testing a bulk build of the ruby ports, which brought up some issues that had to be fixed in a handful of ports.

The next major project was going through the ruby regression tests and fixing issues with them. I started with the svn master branch of ruby and running the regression tests would freeze due to an issue with how libpthread handles separate threads that read/write to the same pipe, so I had to patch those tests before the test suite would complete. After the test suite completed, there were 10 errors. Some of these errors were due to bugs in ruby's SSL code or tests that depended on SSLv3, some were due to the fact that crypt(3) on OpenBSD doesn't support historical DES-based hashses, but ultimately the test suite uncovered 2 kernel bugs and 1 libc bug.

One kernel bug was that socketpair(2) for datagram sockets that used close-on-exec or nonblocking flags resulted in the second socket not being connected to the first socket. I sent a diff to fix this, which was wrong, but the correct fix was committed by guenther@.

The other kernel bug was that unix seqpacket sockets used the EMSGSIZE errno instead of EWOULDBLOCK when their internal buffers would fill. I sent a diff to fix this, which was also wrong, but bluhm@ was able to produce a fix that will hopefully be committed soon.

The libc bug was that our crypt(3) was returning the string ":" instead of NULL in some failure cases, and it wasn't setting errno. tedu@ committed a fix for both of these issues, and I committed a small fix for his fix.

I worked on a lot of port updates, including updates to aqualung, io, ruby-passenger, as well as updates to about half of the ruby ports that use C extensions. I also did some early ports for prereleases of JRuby 9.0.0.0 and PostgreSQL 9.5, so that interested parties could test them.

Later in the hackathon I did some work related to tame(2), including perl and ruby bindings and a tame(1) implementation (similar in idea to nice(1)). None of those are ready to be committed, but it's possible they will be used at some point in the future. I did get to commit basic support for threaded programs to tame(2).

I had a great time at c2k15. I usually stick to working on ports, but at c2k15 I was able to commit to ports, base, and kernel, and learned quite a bit. A big thank you to all of those who put on c2k15, as well as SAIT for hosting us.

Wow, what a hackathon this was. Thanks for the work and for the report, Jeremy!

(Comments are closed)


Credits

Copyright © - Daniel Hartmeier. All rights reserved. Articles and comments are copyright their respective authors, submission implies license to publish on this web site. Contents of the archive prior to as well as images and HTML templates were copied from the fabulous original deadly.org with Jose's and Jim's kind permission. This journal runs as CGI with httpd(8) on OpenBSD, the source code is BSD licensed. undeadly \Un*dead"ly\, a. Not subject to death; immortal. [Obs.]