I know the CLI for ni seems to be something of a state secret, but is anyone aware of any helpful debugging switches?
I have a game fragment that I fiddle around with now and then. It compiled fine under previous versions of Inform7, but as of 6M62 it dies suddenly after printing:
++ 15% (Drawing inferences)
++ 20% (Binding rulebooks)
++ 23% (Binding rulebooks)
++ 26% (Binding rulebooks)
++ 29% (Binding rulebooks)
++ 32% (Binding rulebooks)
++ 35% (Binding rulebooks)
++ 38% (Binding rulebooks)
++ 41% (Generating code)
++ 44% (Generating code)
++ 47% (Generating code)
I’d like to track down where in the game code it is failing, but this is not sufficiently helpful (for me, anyway).
The platform is Fedora 23 running the KDE desktop. This happens running Philip Chimento’s nice gnome-inform7, but it also happens just running ni from the CLI Inform package.
There are no debugging switches as far as I know. And they probably wouldn’t help in a situation where the compiler is actually crashing.
Your best best is to run it under a debugger (GDB), look at the backtrace when it crashes, and then search the bug tracker for reports with similar backtraces.
Running with debugger produces the extra information:
Program received signal SIGSEGV, Segmentation fault.
0x000000000053e6bc in ?? ()
#0 0x000000000053e6bc in ?? ()
#1 0x00000000004fdd6f in ?? ()
#2 0x00000000005475bf in ?? ()
#3 0x0000000000545814 in ?? ()
#4 0x0000000000534e2d in ?? ()
#5 0x00000000005271b1 in ?? ()
#6 0x000000000052710b in ?? ()
#7 0x0000000000529a12 in ?? ()
#8 0x000000000052bc8d in ?? ()
#9 0x00000000005318b6 in ?? ()
#10 0x000000000054ed9a in ?? ()
#11 0x000000000054d0d4 in ?? ()
#12 0x0000000000598858 in ?? ()
#13 0x000000000059bc13 in ?? ()
#14 0x0000000000400429 in ?? ()
#15 0x00007fffffffe3f8 in ?? ()
#16 0x0000000000000000 in ?? ()
Ok, damn. I thought the Linux compiler binaries were built with symbols. (The Mac binaries are.)
I have no advice other than “look through the bug reports labelled ‘crash’ and see if you’re making any of those mistakes.” Or comment out chunks of your game and see if you can track down where the problem is coming from. Or compile it on a Mac.
This is why a good CI environment for IF would be good. Every time you build locally, a separate external build is kicked off, including storing that version of your story and extensions with the results.
This way you could track when the bad error happened and what you changed to make it happen.
Dave, we know when the bad error happened. It happened when the poster switched to 6M62.
I’ll try subtracting parts of the game fragment and see if I can localize the problem a little, but it’s quite odd that it didn’t trigger some sort of syntax violation or something. I was using version 5 or so of Ms. Short’s Computers extension – which I notice seems to have been disappeared from the official collections. But I don’t recall that she did anything particularly outrageous in it. It was more of an object example for writing extensions.