Parser hang in Threaded Conversations 9.1, Inform 7 10.1.2

When in a conversation, any unrecognized verb causes the parser to loop indefinitely.

To reproduce, run “Very Simple” example from extension. Then:

  1. “hello”
  2. “trace 3”
  3. “asdf”

Problem should be obvious :wink:

Any help would be greatly appreciated as my WIP relies heavily on TC.

What do you think, y’all? Should I just give up and write my game in 9.3 instead of begging for every 10.1 extension to be fixed?

Here’s the source of the infinite loop:

Rule for printing a parser error when the problem is the noun did not make sense in that context error (this is the prevent context error rule):
    if the player's command includes "say/ask/answer/discuss/tell/a/t" or the player's command includes "[any quip]" or the current interlocutor is not a person:
        say "[text of parser error internal rule response (N)][line break]" (A) instead; ['Not a verb I recognize.']
        make no decision.

or the player's command includes "[any quip]" invokes the parser to see if that’s true, and testing that results in an a noun didn’t make sense error, etc. I don’t know what’s different between 6M62 and v10 to make the behavior differ.

In WI 17.10-11 the docs warn against understand statements with a grammar token that will resolve to a noun, but no verb, because it’s so easy to end up with an infinite loop. Threaded Conversation does this repeatedly:

Understand "[something related by mentioning]" as a quip.
Understand "[a typable quip]" as discussing.
Understand "[any quip]" as non-speaking.

Here’s a previous Threaded Conversations issue in 9.3/6M62 I found intractable at the time:

Thanks for pointing that out. I was assuming the problem was in the I6 inclusion. This rule can be removed without too much ill effect – it just corrects “noun” to “verb” in certain error messages which nobody cares about anyway, and which can easily be replaced with something generic like “I couldn’t make sense of that”.

I haven’t managed to reproduce the other bug (from the thread you link to), but I’ll try some more.

Thanks for your expertise!

Sounds like you have it managed, but I pushed a patched version to a branch on my repo fork: patched Threaded Conversations. I tried it with the examples and it doesn’t obviously blow up or intfinitely loop.

1 Like

Thanks. I’ve pulled that into my project.

1 Like