actually there would be little mirc could do. a dll can try to write to memory that simply doesnt exist for example
char *blah;
blah[0] = 'c';
because the dll is loaded into the address space of mircs main thread then that thread is closed (by windows). adding additional threads would add to the complexity of the situation. A dll may be loaded in a seperate thread and tries to access shared resources. this can also cause crashes and at the very least corruption of said resource. There are of course solutions one can use such as semaphores ctritical sections mutex's and the like however the code can become quite complex and quite difficult to track down errors.
in this example it was the fault of the dll not handling NULL pointers and not mirc's perhaps a quick message to the author of the dll might be helpful