fuzzball-muck/fuzzball

Oddities and server crash while MUF debugging

Opened this issue · 0 comments

tanabi commented

While working on some cmd-editplayer.muf, I was able to observe a pretty big oddity.

When set to D or Z, either way, if you go to menu item 13 upon entering the program, you will hit this line of code (currently line 1291 in what's check into fuzzball-muf):

      pop GLOBAL_ROOT "_details/" strcat modify-looktraps

The DEBUG and 'z' output will NOT show the trailing '/' on that property when it shows up on the stack. instead, it looks like this:

Debug> Pid 239: #2253 1291 () "/_descs/prefs/global/"
Debug> Pid 239: #2253 1291 ("/_descs/prefs/global/") "_details/"
Debug> Pid 239: #2253 1291 ("/_descs/prefs/global/", "_details/") STRCAT
Debug> Pid 239: #2253 1291 ("/_descs/prefs/global/_details") 
EXEC->modify-looktraps

modify-looktraps uses an automatic variable, whatever we're calling those, so upon EXEC that string immediately goes into a variable. If 'z' debug mode is used, you can 'print' the variable and see it actually has the trailing "/".

Both d and z mode debugging automatically truncate long strings, but there is usually an indicator that the string is truncated. I'm wondering if there's some edge case, maybe a precise number of characters, where you will get truncated without hte indicator? Or is this a more nefarious bug?

Because I also got Hope Island to crash. In Z mode, I experienced a few oddities. I stepped through modify-looktraps and got somewhere around line 429. Basically, I picked 'edit looktrap' (option 3) and edited an existing looktrap, then entered 'y' to the question. It runs determine-list-name and stores the list name in a variable.

I typed 'help' at that juncture to remember how to read a variable ... and after displaying help, the editor acted as if I typed 'continue' and ran to the end of the program. I then had a hard time exiting the program ... I think I typed 'exit' then 'next'... eventually I got out.

Then I debugged it again, this time I didn't use 'help', and I got to the end of the program naturally. Again, I couldn't remember how to get out of the exitor, so I typed 'next' a few times to get out of the program, and the MUCK crashed.

I am documenting these as one big issue because I'm not sure if they are related or not. There's definitely a lot of fishy here; the details strcat problem, for instance, might be a memory error of some kind and it may be precipiated this whole situation. Or perhaps the oddness of 'help' making the program continue -- which, honestly, might also be user error, maybe I typo'd something and made it continue. Or perhaps me hitting next a bunch at the end of the program ? I don't know. There's some combination of these that lead the MUCK to crash.

Unfortunately, my stderr logs don't reveal anything interesting and I don't have a core file. So we will need to dig into this and accurately reproduce it, and break it up into smaller issues as needed.