Minor surgery

Thursday, February 6, 2020

Today, I had minor knee surgery (removing a broken meniscus). I had full anesthesia, and it went better than the last few times, but whatever they gave me had a longer-lasting effect.

It was an interesting exercise in self-evaluation. I could not say some words properly until late in the evening, e.g. all the names of the medications would come out wrong. I knew they were wrong, but I had to self-correct three or four times to get it right. During dinner, my kinds made fun of me because I was saying non-sensical things all the time, calling Marie and then saying "Oh, sorry, no, I wanted to talk to your mom", that kind of things. Vincent called that "exhibit one".

A funny example is that I initially set the date for this page to 020106, when it should have been 200206 (Feb 6, 2020). So the next day, when I looked for it, I could not find it and had to grep the BlogMax folder to find it.

Another nasty side effect of the drugs was that my mouth was very dry and I was incredibly thirsty all the time. I must have drank liters of water during the day. So despite being very tired, I could not really rest. That also kept me up a good part of the night.

XL Continuous Integration

The XL continuous integration on GitLab had been broken for about 5 months, following a change in one of the latest images being used (Fedora, I believe) that prevented diff from being found without installing a diffutils package.

Late in the evening, I figured that repairing it was something I could try without too much risk, since by definition, CI is there to check things. So I looked into it, repaired it, and while I was at it, added a validation of the llvm-crap.h support for older revisions of LLVM, going all the way back to LLVM 4.0 (which required a Fedora 28 image). The CI is now looking much greener.

Then I figured I might as well understand GitHub recently improved CI, which they call "Actions". It's actually fairly simple, and has a nice matrix capability. You simply add a YAML file and it automatically shows up in your "Actions" tab. There is even support for Windows images, which I have not tested yet. But trying the macOS images showed that there was a regression introduced by Catalina, where their "System Integrity Protection" means that DYLD_LIBRARY_PATH, the macOS equivalent of LD_LIBRARY_CACHE on Linux, is now utterly broken.

The man page for dyld states this:

DESCRIPTION
       The  dynamic  linker  checks the following environment variables during
       the launch of each process.
       Note: If System Integrity  Protection  is  enabled,  these  environment
       variables  are  ignored  when  executing  binaries  protected by System
       Integrity Protection.

The part "when executing binaries protected by System Integrity Protection" is a lie as far as I can tell. I don't believe that a binary I build should fit that category, and if DYLD_LIBRARY_PATH is the only way to find a library, it should be respected. That breaks the make check target of make-it-quick. I implemented an ugly workaround and filed an issue against make-it-quick. Grrr.

I also updated the alltest script to add a -x option to exclude specific tests, although I ended up not having to use it because the right exclusions where already in place for the faulty tests (the fault-injection tests that validate the crash handlers have an output that depends a lot on optimization level, so even if they are heavily sanitized, they are still best excluded from release.

During the night, since I could not sleep, I started writing up a list of the tasks to do and created a bullet-list in the Compiler Status section to document all the stuff that does not work. I don't want occasional visitors to be misled and believe that this stuff works. I also started creating issues and projects to organize my work. There is a lot more to do.