I had some free time this weekend and I've spent some of it trying to learn Go since mlmym seems to be unmaintained and I'd like to try to fix some issues in it. I ran into a stumbling block that took a while to solve and which I had trouble finding relevant search results for. I've got it solved now, but felt like writing this up in case it helps anyone else out.
When running most go commands I tried (e.g. go mod init example/hello or go run hello.go or even something as seemingly innocuous as go doc cmd/compile when a go.mod file exists) the command would hang for a rather long time. In most cases, that was about 20~30 seconds, but in one case -- trying to get it to output the docs about the compile tool -- it took 1 minute and 15 seconds! This was on a relatively fresh Linux Mint install on old, but fairly decent hardware using golang-1.23 (installed from apt).
After the long wait, it would print out go: RLock go.mod: no locks available -- and might or might not do anything else depending on the command. (I did get documentation out after the 1min+ wait, for example.)
Now, there's no good reason I could think of why printing out some documentation or running Hello World should take that long, so I tried looking at what was going on with strace --relative-timestamps go run hello.go > trace.txt 2>&1 and found this in the output file:
0.000045 flock(3, LOCK_SH) = -1 ENOLCK (No locks available)
25.059805 clock_gettime(CLOCK_MONOTONIC, {tv_sec=3691, tv_nsec=443533733}) = 0
It was hanging on flock for 25 seconds (before calling clock_gettime).
The directory I was running in was from an NFS mount which was using NFSv3 unintentionally. File locking does not work on NFSv3 out of the box. In my case, changing the configuration to allow it to use NFSv4 was the fix I needed. After making the change a clean Hello World build takes ~5 seconds -- and a fraction of a second with cache.
After solving it, I've found out that there are some issues related to this open already (with a different error message -- cmd/go: "RLock …: Function not implemented") and a reply on an old StackOverflow about a similiar issue from one of the developers encouraging people to file a new issue if they can't find a workaround (like I did). For future reference, those links are:
Thanks. I finally managed to get him this morning! Just barely won though. 23 HP left, Estus flask empty and used an Ember for healing late in the fight... One Ashen flask left. Used the Pestilent Mist strategy in combination with Sunlight Spears and Tears of Denial (which triggered twice, I think, during the fight) -- cast using Crystal Chime+5 and unequipped my sword to stay under the 70% weight threshold. 8 Estus / 7 Ashen Estus split. SL143. Ring of the Sun's First Born, Morne's Ring, Sage Ring, Estus Ring. Dragoncrest shield (for fire defense) + Crest shield (for Dark defense) that I meant to switch to for the second phase, but didn't. Armor was a random collection of whatever seemed like it might help -- most significant piece was the Winged Knight Armor; I look really goofy. Started game as Deprived and played early game as Dex fighter before switching to mostly pyromancy mid-game. Highest stat is currently 40 Faith -- I did some grinding to get there from 35 to free up a ring slot for an earlier strategy that didn't work. (The 3 guys who drop down on top of the Archive are worth about ~21K souls each with my best grinding gear equipped and are vulnerable to Rapport -- best grinding location I've found so far.)
I'm sure the guys who live and breath this game will be like "Lol, git gud scrub" but it's my first playthrough and I'm just happy I managed to pull it off at all. :p