I want to jump in here because I have been noticing this behaviour as well.

Prior to 7.25, mIRC worked pretty well with a shutdown operation-- I know other users have complained about issues, but I never had any problems.

However since my upgrade, it seems that mIRC can't remember where the main window should be placed. Every time I restart my machine, the mIRC window pops up in the wrong place. I know it's the wrong place because I keep my mIRC window on my 2nd monitor-- when mIRC launches, it loads up on my 1st monitor. I move it back, and then, like clockwork, after my next shutdown and startup, it's back on monitor 1. Kind of frustrating, actually. I've never lost /ignore or other data, but then again, I don't play with those settings much, so it's possible I would have lost those settings too.

Note that this only happens during a shutdown. If I close mIRC manually and restart the program, it retains its settings. However it's unreasonable for me to close mIRC manually each time I shutdown when no other program has this requirement.

I want to reiterate that I never used to have this problem. I think there are timing issues revolving around mIRC's shutdown procedures and the amount of time Windows will wait for a program to close. This would explain why other users (probably ones on slower machines) had this issue before but I never did. But it would seem that now mIRC's shutdown procedures have been slowed down due to new changes, and have passed some threshold which causes it to affect my machine as well.

Given the amount of complaints about losing data to shutdowns and power outages, it seems like mIRC should do a better job of protecting persisted data-- for instance, mIRC currently does not flush settings immediately-- but it probably should start to do so, or do so on a 5-10 minute timer (on an idle timer so as to not interrupt user actions if it's slow). And perhaps there are specific things mIRC is doing wrong in the context of a shutdown that should be looked into.


- argv[0] on EFnet #mIRC
- "Life is a pointer to an integer without a cast"