Hi.
This time I found a lot more strange stuffs...
~ wrote:
I (don't) think that there would likely be a periodical interrupt vector such as the one of timer/s
Yes, it must have something to do with interrupt, because if I add a CLI at the start of the program, it will work. But what surprises me are:
1. On a real machine even if I add a STI explicitly everything will work perfectly;
2. Bochs for Win32 accept the code;
3. When I enable Bochs internal debugger the crash disappears(IP comes to JMP $);
And anyway it doesn't do anything to my Bochs so I don't know what it can be, maybe that's a bug introduced on update or at compile-time from source.
I recompiled it but crashes still occur...
pcmattman wrote:
Could you show us your Bochs log? A lot can be figured out from that, especially when you press the power button and the state is logged - including the state of ESP and SS.
What I find in the log that can be a clue is that it may be the fault of INT 0x1C, which is for the user timer. But:
4. INT 0x1C should have an empty routine initially, so if it occurs only EFLAGS, CS and IP will be pushed, and IF will be reset. And such operations shouldn't take up so much stack space.
("especially when you press the power button",yeah,of course--it keeps restarting! When I "finally" realized what was going on, bochsout.txt had grown to over 20 MB.
![Rolling Eyes :roll:](./images/smilies/icon_rolleyes.gif)
)
It's really a strange problem to me(but may be a waste of time for you because nobody would have such a small stack
![Wink :wink:](./images/smilies/icon_wink.gif)
)... Before I can make sure that it's a bug of Bochs I still would like to know more of what you think about it...
Thanks!
[edit] Why it will triple a fault if I press Alt when the focus is given to Bochs' window? The fault indicates that eSP < 16 and it's too small for a PUSHAD instruction...
[/edit]