Hey. As I said in another thread, I compiled angband in debug mode and restarted angband until I could make the error happen. It's breaking in the line in bold:
with the message Access Violation reading location 0x02131532, which happens to be inside k_ptr (k_ptr points to 0x021314f0). The address seems to be that of k_ptr->aware, but inside the debugger, I noticed that "&k_info[o_ptr->k_idx]" returns me an invalid instance. Since I'm no expert, I have no idea who fills k_info and when.
I fail to see why the crash isn't consistent, though. I can help track this over IRC if you want (nick is Sergio100), I attached my savefile. I've been a professional C/C++ coder for over 10 years, and I've got a degree in CS, so don't be shy, talk dirty to me
The call stack is:
> angband.exe!easy_know(const object_type * o_ptr=0x02228338) Line 38 + 0x3 bytes C
angband.exe!object_flag_is_known(const object_type * o_ptr=0x02228338, int idx=1, unsigned long flag=65536) Line 164 + 0x9 bytes C
angband.exe!display_resistance_panel(const player_flag_record * resists=0x00500758, unsigned int size=12, const region * bounds=0x00500a28) Line 263 + 0x26 bytes C
angband.exe!display_player_flag_info() Line 279 + 0x24 bytes C
angband.exe!display_player(int mode=1) Line 912 C
angband.exe!do_cmd_change_name() Line 195 + 0x9 bytes C
angband.exe!textui_process_command(char no_request=0) Line 671 C
angband.exe!textui_get_cmd(cmd_context context=CMD_GAME, char wait='') Line 1796 + 0x11 bytes C
angband.exe!win_get_cmd(cmd_context context=CMD_GAME, char wait='') Line 4569 + 0xe bytes C
angband.exe!cmd_get(cmd_context c=CMD_GAME, game_command * cmd=0x0017fe00, char wait='') Line 160 + 0xf bytes C
angband.exe!process_command(cmd_context ctx=CMD_GAME, char no_request=0) Line 297 + 0x19 bytes C
angband.exe!process_player() Line 1153 + 0x9 bytes C
angband.exe!dungeon() Line 1487 C
angband.exe!play_game() Line 1818 C
angband.exe!WinMain(HINSTANCE__ * hInst=0x00400000, HINSTANCE__ * hPrevInst=0x00000000, char * lpCmdLine=0x00702f5c, int nCmdShow=1) Line 4890 C
angband.exe!__tmainCRTStartup() Line 263 + 0x1b bytes C
kernel32.dll!74f8e4a5()
[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]
ntdll.dll!76f3cfed()
ntdll.dll!76f3d1ff()
Code:
bool easy_know(const object_type *o_ptr) { object_kind *k_ptr = &k_info[o_ptr->k_idx]; [B] if (k_ptr->aware && (k_ptr->flags[2] & TR2_EASY_KNOW))[/B] return TRUE; else return FALSE; }
I fail to see why the crash isn't consistent, though. I can help track this over IRC if you want (nick is Sergio100), I attached my savefile. I've been a professional C/C++ coder for over 10 years, and I've got a degree in CS, so don't be shy, talk dirty to me
The call stack is:
> angband.exe!easy_know(const object_type * o_ptr=0x02228338) Line 38 + 0x3 bytes C
angband.exe!object_flag_is_known(const object_type * o_ptr=0x02228338, int idx=1, unsigned long flag=65536) Line 164 + 0x9 bytes C
angband.exe!display_resistance_panel(const player_flag_record * resists=0x00500758, unsigned int size=12, const region * bounds=0x00500a28) Line 263 + 0x26 bytes C
angband.exe!display_player_flag_info() Line 279 + 0x24 bytes C
angband.exe!display_player(int mode=1) Line 912 C
angband.exe!do_cmd_change_name() Line 195 + 0x9 bytes C
angband.exe!textui_process_command(char no_request=0) Line 671 C
angband.exe!textui_get_cmd(cmd_context context=CMD_GAME, char wait='') Line 1796 + 0x11 bytes C
angband.exe!win_get_cmd(cmd_context context=CMD_GAME, char wait='') Line 4569 + 0xe bytes C
angband.exe!cmd_get(cmd_context c=CMD_GAME, game_command * cmd=0x0017fe00, char wait='') Line 160 + 0xf bytes C
angband.exe!process_command(cmd_context ctx=CMD_GAME, char no_request=0) Line 297 + 0x19 bytes C
angband.exe!process_player() Line 1153 + 0x9 bytes C
angband.exe!dungeon() Line 1487 C
angband.exe!play_game() Line 1818 C
angband.exe!WinMain(HINSTANCE__ * hInst=0x00400000, HINSTANCE__ * hPrevInst=0x00000000, char * lpCmdLine=0x00702f5c, int nCmdShow=1) Line 4890 C
angband.exe!__tmainCRTStartup() Line 263 + 0x1b bytes C
kernel32.dll!74f8e4a5()
[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]
ntdll.dll!76f3cfed()
ntdll.dll!76f3d1ff()
Comment