That contact callback does not delete bodies, all body deletion happens outside the callbacks, it just removes contacts it doesn't want to collide.
I still have debugger open on this crash and can look things up, so this is contactjoint->dgconstraint:
- dgConstraint {m_userData=0x00000000 m_body0=0x18661e80 {m_externalForce={m_f=0x18662070 {0.000000000, 0.000000000, ...} ...} ...} ...} dgConstraint
+ __vfptr 0x6864b5ac {newton.dll!const dgContact::`vftable'{for `dgConstraint'}} {0x68436da0 {newton.dll!dgContact::ResetMaxDOF(void)}, ...} void * *
m_userData 0x00000000 void *
+ m_body0 0x18661e80 {m_externalForce={m_f=0x18662070 {0.000000000, 0.000000000, -20000.0000, 0.000000000} m_i=...} ...} dgBody *
+ m_body1 0x18b89180 {m_externalForce={m_f=0x18b89370 {0.000000000, 0.000000000, 0.000000000, 0.000000000} m_i=...} ...} dgBody *
+ m_link0 0x25d96560 {m_info={m_joint=0x18b835c0 {m_positAcc={m_f=0x18b83610 {...} m_i=0x18b83610 {...} m_type=...} ...} ...} ...} dgList<dgBodyMasterListCell>::dgListNode *
+ m_link1 0x25d95f20 {m_info={m_joint=0x18b835c0 {m_positAcc={m_f=0x18b83610 {...} m_i=0x18b83610 {...} m_type=...} ...} ...} ...} dgList<dgBodyMasterListCell>::dgListNode *
m_updaFeedbackCallback 0x00000000 void (const dgConstraint &, float, int) *
m_clusterLRU -1 int
m_index 2 unsigned int
m_impulseLru 0 unsigned int
m_dynamicsLru 0 unsigned int
m_maxDOF 12 unsigned int
m_constId 3 unsigned int
m_solverModel 2 unsigned int
m_enableCollision 1 unsigned int
m_isActive 1 unsigned int
m_isBilateral 0 unsigned int
m_graphTagged 1 unsigned int
m_isInSkeleton 0 unsigned int
m_isInSkeletonLoop 0 unsigned int
contactjoint does not have "newcontact" flag on it:
m_body0:
- m_body0 0x18661e80 {m_externalForce={m_f=0x18662070 {0.000000000, 0.000000000, -20000.0000, 0.000000000} m_i=...} ...} dgBody *
+ [dgDynamicBody] {m_externalForce={m_f=0x18662070 {0.000000000, 0.000000000, -20000.0000, 0.000000000} m_i=0x18662070 {...} ...} ...} dgDynamicBody
+ __vfptr 0x686547b4 {newton.dll!const dgDynamicBody::`vftable'} {0x68449a70 {newton.dll!dgDynamicBody::`scalar deleting destructor'(unsigned int)}, ...} void * *
+ m_matrix {m_front={m_f=0x18661e90 {-0.997542858, 0.0700577274, 0.000155081143, 0.000000000} m_i=0x18661e90 {-1082171656, ...} ...} ...} dgMatrix
+ m_rotation {m_x=7.67626843e-005 m_y=-2.35391381e-005 m_z=0.999385536 ...} dgQuaternion
+ m_invWorldInertiaMatrix {m_front={m_f=0x18661ee0 {0.0101991091, 0.00283021224, -4.74074113e-010, 0.000000000} m_i=0x18661ee0 {...} ...} ...} dgMatrix
+ m_mass {m_f=0x18661f20 {99.8398209, 18.5340500, 107.957207, 1000.00000} m_i=0x18661f20 {1120382461, 1100236220, ...} ...} dgVector
+ m_invMass {m_f=0x18661f30 {0.0100160437, 0.0539547466, 0.00926292967, 0.00100000005} m_i=0x18661f30 {1008998997, ...} ...} dgVector
+ m_veloc {m_f=0x18661f40 {0.000000000, 0.000000000, 0.000000000, 0.000000000} m_i=0x18661f40 {0, 0, 0, 0} m_type=...} dgVector
+ m_omega {m_f=0x18661f50 {0.000000000, 0.000000000, 0.000000000, 0.000000000} m_i=0x18661f50 {0, 0, 0, 0} m_type=...} dgVector
+ m_accel {m_f=0x18661f60 {0.000000000, 0.000000000, 0.000000000, 0.000000000} m_i=0x18661f60 {0, 0, 0, 0} m_type=...} dgVector
+ m_alpha {m_f=0x18661f70 {0.000000000, 0.000000000, 0.000000000, 0.000000000} m_i=0x18661f70 {0, 0, 0, 0} m_type=...} dgVector
+ m_minAABB {m_f=0x18661f80 {117.174011, -100.830193, 1.43983102, 0.000000000} m_i=0x18661f80 {1122654488, -1026971377, ...} ...} dgVector
+ m_maxAABB {m_f=0x18661f90 {117.774902, -99.6082382, 1.82049358, 0.000000000} m_i=0x18661f90 {1122733248, -1027131541, ...} ...} dgVector
+ m_localCentreOfMass {m_f=0x18661fa0 {-6.34672759e-010, 0.00181030203, 1.13334420e-009, 1.00000000} m_i=0x18661fa0 {-1339132640, ...} ...} dgVector
+ m_globalCentreOfMass {m_f=0x18661fb0 {117.474327, -100.221024, 1.63293993, 1.00000000} m_i=0x18661fb0 {1122693851, -1027051222, ...} ...} dgVector
+ m_impulseForce {m_f=0x18661fc0 {0.000000000, 0.000000000, 0.000000000, 0.000000000} m_i=0x18661fc0 {0, 0, 0, 0} m_type=...} dgVector
+ m_impulseTorque {m_f=0x18661fd0 {0.000000000, 0.000000000, 0.000000000, 0.000000000} m_i=0x18661fd0 {0, 0, 0, 0} m_type=...} dgVector
+ m_gyroAlpha {m_f=0x18661fe0 {0.000000000, 0.000000000, 0.000000000, 0.000000000} m_i=0x18661fe0 {0, 0, 0, 0} m_type=...} dgVector
+ m_gyroTorque {m_f=0x18661ff0 {0.000000000, 0.000000000, 0.000000000, 0.000000000} m_i=0x18661ff0 {0, 0, 0, 0} m_type=...} dgVector
+ m_gyroRotation {m_x=7.67626843e-005 m_y=-2.35391381e-005 m_z=0.999385536 ...} dgQuaternion
m_criticalSectionLock 0 int
m_flags 3688 unsigned int
m_freeze 0 unsigned int
m_resting 0 unsigned int
m_sleeping 0 unsigned int
m_autoSleep 1 unsigned int
m_inCallback 0 unsigned int
m_jointSet 1 unsigned int
m_collidable 1 unsigned int
m_equilibrium 0 unsigned int
m_spawnnedFromCallback 0 unsigned int
m_continueCollisionMode 1 unsigned int
m_collideWithLinkedBodies 1 unsigned int
m_transformIsDirty 1 unsigned int
m_gyroTorqueOn 0 unsigned int
m_isdead 0 unsigned int
m_userData 0x1b7e2124 void *
+ m_world 0x18af5460 {m_destructor=0x00000000 } dgWorld *
+ m_collision 0x25defea0 {m_globalMatrix={m_front={m_f=0x25defea0 {-0.997542858, 0.0700577274, 0.000155081143, 0.000000000} ...} ...} ...} dgCollisionInstance *
+ m_broadPhaseNode 0x18d81380 {m_body=0x18661e80 {m_externalForce={m_f=0x18662070 {0.000000000, 0.000000000, -20000.0000, ...} ...} ...} ...} dgBroadPhaseBodyNode *
+ m_masterNode 0x18b8d580 {m_info={m_body=0x18661e80 {m_externalForce={m_f=0x18662070 {...} m_i=0x18662070 {...} m_type=...} ...} } ...} dgList<dgBodyMasterListRow>::dgListNode *
+ m_broadPhaseaggregateNode 0x00000000 <NULL> dgBroadPhaseAggregate *
m_destructor 0x00000000 void (dgBody &) *
m_matrixUpdate 0x004559a0 {TDC.exe!CARTRANSFORM(void)} void (const dgBody &, const dgMatrix &, int) *
+ m_disjointInfo {m_parent=0x18661e80 {m_externalForce={m_f=0x18662070 {0.000000000, 0.000000000, -20000.0000, 0.000000000} ...} ...} ...} dgBody::dgSetInfo
m_index -1 int
m_uniqueID 6151 int
m_bodyGroupId 1 int
m_rtti 3 int
m_type 0 int
m_serializedEnum -1 int
m_dynamicsLru 0 unsigned int
m_genericLRUMark 0 unsigned int
m_body1:
- m_body1 0x18b89180 {m_externalForce={m_f=0x18b89370 {0.000000000, 0.000000000, 0.000000000, 0.000000000} m_i=...} ...} dgBody *
+ [dgDynamicBody] {m_externalForce={m_f=0x18b89370 {0.000000000, 0.000000000, 0.000000000, 0.000000000} m_i=0x18b89370 {...} ...} ...} dgDynamicBody
+ __vfptr 0x686547b4 {newton.dll!const dgDynamicBody::`vftable'} {0x68449a70 {newton.dll!dgDynamicBody::`scalar deleting destructor'(unsigned int)}, ...} void * *
+ m_matrix {m_front={m_f=0x18b89190 {1.00000000, 0.000000000, 0.000000000, 0.000000000} m_i=0x18b89190 {1065353216, ...} ...} ...} dgMatrix
+ m_rotation {m_x=0.000000000 m_y=0.000000000 m_z=0.000000000 ...} dgQuaternion
+ m_invWorldInertiaMatrix {m_front={m_f=0x18b891e0 {0.000000000, 0.000000000, 0.000000000, 0.000000000} m_i=0x18b891e0 {0, 0, ...} ...} ...} dgMatrix
+ m_mass {m_f=0x18b89220 {9.99999987e+014, 9.99999987e+014, 9.99999987e+014, 9.99999987e+014} m_i=0x18b89220 {...} ...} dgVector
+ m_invMass {m_f=0x18b89230 {0.000000000, 0.000000000, 0.000000000, 0.000000000} m_i=0x18b89230 {0, 0, 0, 0} m_type=...} dgVector
+ m_veloc {m_f=0x18b89240 {0.000000000, 0.000000000, 0.000000000, 0.000000000} m_i=0x18b89240 {0, 0, 0, 0} m_type=...} dgVector
+ m_omega {m_f=0x18b89250 {0.000000000, 0.000000000, 0.000000000, 0.000000000} m_i=0x18b89250 {0, 0, 0, 0} m_type=...} dgVector
+ m_accel {m_f=0x18b89260 {0.000000000, 0.000000000, 0.000000000, 0.000000000} m_i=0x18b89260 {0, 0, 0, 0} m_type=...} dgVector
+ m_alpha {m_f=0x18b89270 {0.000000000, 0.000000000, 0.000000000, 0.000000000} m_i=0x18b89270 {0, 0, 0, 0} m_type=...} dgVector
+ m_minAABB {m_f=0x18b89280 {63.9365005, -128.063507, 0.936500072, 0.000000000} m_i=0x18b89280 {1115668218, -1023406014, ...} ...} dgVector
+ m_maxAABB {m_f=0x18b89290 {128.063507, -63.9364967, 4.06349993, 0.000000000} m_i=0x18b89290 {1124077634, -1031815431, ...} ...} dgVector
+ m_localCentreOfMass {m_f=0x18b892a0 {0.000000000, 0.000000000, 0.000000000, 1.00000000} m_i=0x18b892a0 {0, 0, 0, 1065353216} ...} dgVector
+ m_globalCentreOfMass {m_f=0x18b892b0 {32.0000000, 32.0000000, 0.000000000, 1.00000000} m_i=0x18b892b0 {1107296256, 1107296256, ...} ...} dgVector
+ m_impulseForce {m_f=0x18b892c0 {0.000000000, 0.000000000, 0.000000000, 0.000000000} m_i=0x18b892c0 {0, 0, 0, 0} m_type=...} dgVector
+ m_impulseTorque {m_f=0x18b892d0 {0.000000000, 0.000000000, 0.000000000, 0.000000000} m_i=0x18b892d0 {0, 0, 0, 0} m_type=...} dgVector
+ m_gyroAlpha {m_f=0x18b892e0 {0.000000000, 0.000000000, 0.000000000, 0.000000000} m_i=0x18b892e0 {0, 0, 0, 0} m_type=...} dgVector
+ m_gyroTorque {m_f=0x18b892f0 {0.000000000, 0.000000000, 0.000000000, 0.000000000} m_i=0x18b892f0 {0, 0, 0, 0} m_type=...} dgVector
+ m_gyroRotation {m_x=0.000000000 m_y=0.000000000 m_z=0.000000000 ...} dgQuaternion
m_criticalSectionLock 0 int
m_flags 1262 unsigned int
m_freeze 0 unsigned int
m_resting 1 unsigned int
m_sleeping 1 unsigned int
m_autoSleep 1 unsigned int
m_inCallback 0 unsigned int
m_jointSet 1 unsigned int
m_collidable 1 unsigned int
m_equilibrium 1 unsigned int
m_spawnnedFromCallback 0 unsigned int
m_continueCollisionMode 0 unsigned int
m_collideWithLinkedBodies 1 unsigned int
m_transformIsDirty 0 unsigned int
m_gyroTorqueOn 0 unsigned int
m_isdead 0 unsigned int
m_userData 0x06a39094 void *
+ m_world 0x18af5460 {m_destructor=0x00000000 } dgWorld *
+ m_collision 0x18b84f00 {m_globalMatrix={m_front={m_f=0x18b84f00 {1.00000000, 0.000000000, 0.000000000, 0.000000000} ...} ...} ...} dgCollisionInstance *
+ m_broadPhaseNode 0x18bda260 {m_body=0x18b89180 {m_externalForce={m_f=0x18b89370 {0.000000000, 0.000000000, 0.000000000, ...} ...} ...} ...} dgBroadPhaseBodyNode *
+ m_masterNode 0x18b8c440 {m_info={m_body=0x18b89180 {m_externalForce={m_f=0x18b89370 {...} m_i=0x18b89370 {...} m_type=...} ...} } ...} dgList<dgBodyMasterListRow>::dgListNode *
+ m_broadPhaseaggregateNode 0x00000000 <NULL> dgBroadPhaseAggregate *
m_destructor 0x00000000 void (dgBody &) *
m_matrixUpdate 0x00000000 void (const dgBody &, const dgMatrix &, int) *
+ m_disjointInfo {m_parent=0x18b89180 {m_externalForce={m_f=0x18b89370 {0.000000000, 0.000000000, 0.000000000, 0.000000000} ...} ...} ...} dgBody::dgSetInfo
m_index -1 int
m_uniqueID 7 int
m_bodyGroupId 5 int
m_rtti 3 int
m_type 0 int
m_serializedEnum -1 int
m_dynamicsLru 0 unsigned int
m_genericLRUMark 0 unsigned int
Bodh bodies have m_isdead = 0 so they were not destroyed?
I will keep this debug session open and can lookup anything that you might need