Inform 6.12 lib - Fatal Error

I’ve been having problems with the 6.12 library. It crashes out of my game when it doesn’t know who “her” is. “Him” works fine for some reason, but if you start up a game and “ask her about stuff” the game will fatal error.

I thought it had something to do with my game, and stayed on 6.11. But I’ve been playing around with a clean build from:

Loaded in all the 6.12 files and inform-6.33, but when I create the .z5, and run it, I get the same fatal error.

I’ve seen other games written in 6.12 that don’t have this bug, I’m wondering what I’m doing wrong?

  • D

6.12 has had two minor updates. It’s now at 6.12.2. Could I get the source code and compiled zcode? What operating system are you using and how did you install the Inform6 compiler and library?

I’ve found this bug on 6.12.1 and 6.12.2, I’ve also compiled on Windows and Mac and had the error on both.

I’ve set up my folder using Roger Firth’s set up, and I download 6.33 off the archive and put it in the Base Library along with the update 6.12 files. Basically all the files are in the Base folder that the batch file is calling.

I’ll PM you the files, thanks for looking into this - D

I also tried pulling all my flags from the batch file and letting it run in strict.

I don’t get the fatal error, but it kicks back Programming Errors before printing the default.

Thanks for the test game binary and source. I’ve confirmed there is a problem in the latest Library code. My initial guess is there’s some sort of longstanding bug in the handling of “her” and other feminine pronouns. My post at Ignoring fatal errors in Zcode dealt with a similar Library bug in Balances as compiled with 6/3. There, TAKE HER would trigger the bug. I did some preliminary testing and found that a bare game with no feminine modifiers of any kind would also show the problem.

Here’s the issue I just now filed:

Thanks for looking into this.

Gosh, I feel bad. I would have reported it a year or so ago, but I thought the problem was with my code. So Thursday night I stripped everything else away to see it I could recreate it, which happened. A year ago, after I found the bug, I tried Illuminismo Iniziato which is 6.33/6.12.1, but that game doesn’t have the problem, so I really thought it was my code.

I don’t know why Illuminismo Iniziato works, but I have found that with more than just a bare game this problem will arise. My game is coming in at around 385k in strict and I can recreate it.

I hope it’s an easy fix, I’d like to update the library in my project.

  • D

The trouble appears to start in parser.h in the block of code beginning at line 2782. There, the parser checks the current pronoun against a list of assorted language descriptors: my, this, these, that, those, his, her, their, its, the, a, an, some, lit, lighted, unlit. If HER is used as in ASK HER ABOUT STUFF, then it appears that this block is incorrectly treating HER as a possessive pronoun (akin to HIS) rather than an object pronoun (akin to HIM).

Further commentary will be on the Gitlab page.

I can’t get a game to abort with a fatal error when typing ASK HER ABOUT STUFF. I just got three complaints about attempting to test “in” or “notin” on a routine. Could you tar up the directory where you put the compiler and library source code and send that to me?

I can’t help but think there may be three bugs: one causing the fatal error, one causing the “in” or “notin” test complaint, and a third in the compiler itself that may or may not be interacting with the first two bugs.

I fixed the “in or notin” test complaint. It was easy once I traced where the error happened, but I still want to know why the fatal error you observed occurred.

Thanks for fixing this, it looks like it works.

When I did a trace on it, it made a call 4 times. One would kick back the right response, coming out of the Ask routine. Then the other three would trigger AskFor, AskTo, AskTo. It was failing on those. Also, the fatal error wouldn’t happen if it was run in Strict.

Hope it helps - D

I think the problem is deeper than this, something else is going on. The problem is fixed in a dummy game, but it still persists in a larger game. I do use Ask creature ‘about’ scope=TopicScope, so I changed scope=TopicScope to topic, deleted all my Scope Routines and I still get a fatal error if I don’t run it in Strict. It’s Library v6.12.3pre.

I’ve managed to get it compiled with strict turned off. Fatal error occurs before the fix, but not afterwards. After tracing where the error happens, I’m convinced that the same line is the culprit.

In case anyone is still wondering, I’ve completely fixed this problem.

Late to the game here, so to speak, but I remember checking the bugs website and I applied some fixes to my local library in early 2018. I think David and I had talked about some issues too, but I can’t remember if this was one of them.

But definitely I was not vanilla Inform lib.

Did you document the bugs you had back then? I’d like to see anything you wrote down about them.