On Mon, Aug 11, 2014 at 4:20 AM, Martin Nilsson (Opera Mini - AFK!) @ Pike (-) developers forum 10353@lyskom.lysator.liu.se wrote:
After the new code generation I get a consistent crash if I start hilfe and does arrow up. Not very helpful backtrace though.
It seems to depend on having a good-sized .hilfe_history. I was unable to reproduce the crash with no history, or with just a couple of lines. The crash happens as you describe if there are at least 9 lines in history; if there are exactly 8, then pressing up won't crash, but pressing down afterward will.
Don't know if that helps at all or not.
ChrisA
lines. The crash happens as you describe if there are at least 9 lines in history; if there are exactly 8, then pressing up won't crash, but pressing down afterward will.
Don't know if that helps at all or not.
It did!
The code crashed if you had 8..15, 24..31, 40..48 etc (when num_entries&8 == 8) history entries in your .hilfe_history.
So, basically, 50% probability or so. :)
Anyway, the code accidentally checked if (value&8) was 8 instead of if (type&8) was 8 before doing a refs++.
Can we get a more minimal test case in the testsuite?
Well, sure, but it seems to be a fairly esoteric crash condition, how often do we write machine code that uses the wrong register, and that for whatever reason _almost_ works?
It is not all that likely to be in the same place if it happens again, really. Especially since the opcode in question is now more or less finished.
pike-devel@lists.lysator.liu.se