It appears that there is a bug in the C++ compiler. The bug manifests itself only in 64 bit mode in classes (and structs) with virtual functions, custom-aligned members (16-or-more byte alignment) and bit fields. If bit field in such class is the last member, then class instances will have the vtable pointer put at wrong offset (shifted by 8 bytes). As a result, calling virtual functions of such instance will crash the program.
To work around the problem and fix such class one can:
a) inherit from some other class that contain virtual functions/vtable pointer
b) move around class members so that bit field does not appear at the last position
The bug is present in both VS2010 & VS2012.