i3 tiling window manager suddenly freezing on Slackware Linux 14.2

October 16, 2019 | ~6 Minute Read

Background

I have sort of put this issue to the side in hopes of it going away on it’s own or with an update from the distro maintainers to no avail (Not that this is the right way to do things, but as is to be expected from a human being, well…I get lazy :P ). The current behavior remains after putting this off a bit over a year. This is when I decided to actually go down the rabbit hole and attempt to get down to the bottom of the issue and actually fix it.

In the mean time I have switched to XFCE for my DE so that I can actually use my system. So I suppose you can say that I have been hiding from the problem in hopes that someone else will fix it. No one had (at least to my knowledge, and it was still occurring on my system anyway) so I had finally had enough of putting up with a system that is not to my entire liking. Not to say anything bad about XFCE and now with the new XFCE 4.14 being released I bet it’s amazing, and better than ever. I honestly can’t wait to try it out, but I really would like to just have i3 wm and using that.

Symptoms

This is what is happening on my system:

  1. Everything is working as expected when booting
  2. Open the Firefox web browser, navigation occurs as usual
  3. Close the FIrefox web browser, desktop suddenly freezes upon closure.
  4. No response from any command on keyboard (including CTRL+F2 to attempt and get a TTY)
  5. A hard shutdown has to be done in order to recover the system
  6. Once the system is back up after a shutdown / restart, i3 works as expected

Troubleshooting

So without further delay I got to checking what the issue really was. The first step I took was to review the internet via Google on whether or not this issue had already been reported by others. It seemingly was, I found out that there was an issue already reported against i3’s github repository. This issue was reported as closed and fixed later by this issue. After all this, I still had the issue, what gives? Since I had the issue still occurring on my system, I went through the debugging instructions that the i3 team recommends, below are the results:

$ i3 --moreversion 2>&- || i3 --version
Binary i3 version:  4.16.1 (2019-01-27) © 2009 Michael Stapelberg and contributors
Running version: < 4.2-200

At this point I realized that I was running an older version from the currently newest available, upon review of the changes done on the github issues I noticed that the date of the merge that fixed the issue was on Aug 8, 2018 but my version build time appeared to be from Jan 27, 2019. I didn’t know enough at the time about how to check which version this changed was merged into in a straight forward way.

I decided to check on Slackbuilds to see if the maintainer of the i3 slackbuild (which is how I installed i3) had updated to the latest version. He indeed had, so I removed the old package and installed the new version of it.

$ slackpkg remove i3-4.16.1-x86_64-1_SBo

With this done, I simply set out to build the new version with the sbopkg command from my terminal as the root user, assuming I had already installed all of the necessary dependencies from my last build. Sure enough the new package was built a few minutes later and when checking the version again, this is what I saw:

$ i3 --moreversion 2>&- || i3 --version
Binary i3 version:  4.16.1 (2019-01-27) © 2009 Michael Stapelberg and contributors

Running version: < 4.2-200

“Hmm, that’s odd, maybe I made a mistake?” I wondered. At this point in time life happened and I left this once again in the back burner. I came back to this (Oct 2019) and noticed that the slackbuilds version was again up to date to the latest release. I decided to upgrade it once again and see if the version was updated from the debugging commands.

I removed the installed version again:

$ slackpkg remove i3-4.16.1-x86_64-1_SBo

I synced the sbopkg lists, however it seems like the version that was set to be built was still 4.16.1 instead of 4.17.1 which is what I saw available on the sbopkg page for i3. This was quite confusing, and was probabaly what had happened in my previous rebuild attempt as well, so I decided to do the install manually to make sure that the version that was being built was correct.

I simply used the already existing i3 slackbuild script and downloaded the source package. Then placed source tarball into the build script folder and ran the build script.

$ tar -xvzf i3.tar.gz
$ mv i3-4.17.1.tar.bz2 i3/
$ ./i3.SlackBuild

With the package built it was a simple matter of installing it on the system and then switching my graphic environment in order to test if this fixed the issue.

$ installpkg i3-4.17.1-x86_64-1_SBo.tgz
#This has to be done as your daily user not as root, as you will be setting the environment for the user that executes this
$ xwmconfig

Just to be sure I checked the output of the previously tried commands:

$ i3 --moreversion 2>&- || i3 --version
Binary i3 version:  4.17.1 (2019-08-30) © 2009 Michael Stapelberg and contributors
Running i3 version: 4.17.1 (2019-08-30)

Finally! I attribute this odd behaviour on the build to my own system and not to an issue with the i3 slackbuild. This looked promising, so I went ahead and tried reproducing the issue, opened firefox browsed a bit and then closed it, and…it worked!

Conclusion

I’m actually quite surprised that it did work, I thought it was some kind of issue specific to my system that made this error occur, however I am very happy that this now seems (you can never be too sure) resolved. If there is any lesson to be had from this experience it’s the following: Keep your system up to date! This is something that a lot of us as time goes by sometimes forget about, but as you can see I could have saved myself a year of pain and suffering if I had only done a proper check of the update process I was doing. I will keep testing my system since I have officially changed back to i3 and will keep using it. In case there are any other issues I will make sure to report back here.