yes. you are calling the dtor twice. once from your so. once from maya. read up on shared objects, allocating across dll bounds, pure virtual interfaces, virtual base classes, malloc/free, memory mapping and writing your own plugin mechanisms in C++. Maya is calling delete on ParserTranslator, which means it is calling delete on MPxFileTranslator (which is fine, it's allowed to, it's defined in it's dll, and it's designed to be safe since it has declared a virtual dtor).
It's also calling delete on Parser - which it is not allowed to do, since you are the one calling new on that object, and maya has not got a clue what exists in the memory alloted to your plugin via the CRT. Thus, maya has caused malloc/free to blow up because maya's version of malloc/free (that exists in a seperately mapped memory location to yours) does not have a clue where the feck that memory resides. so, the CRT crashes.
Anyhow, multiple inheritance is a terrible idea. It's one of the worst programming paradigms ever invented and should be avoided at all cost. If you continue to use it you will very soon start finding the true horror of virtual base classes and all that nastyness.
CODE
class Person {}
class Student : public Person {}
class Musician : public Person {}
class StudentMusician : public Student, public Musician {}
Imo, ParserTranslator is a file translator, that uses a pre-defined working parser class. ergo,
CODE
ParserTranslator : MpxFileTranslator {
Parser p;
}
Ultimately maya doesn't give a toss about your Parser class, however you are trying to believe that it should.... that's not the way plugins work.