The most common source of instability in DarkGDK 2.0 is from not handling engine runtime errors. To see when they occur either check dbGetLastError() or register a callback function with dbSetRuntimeErrorCallback().
At the moment DarkGDK 2.0 will continue running when one of these errors occurs however they should be regarded as irrecoverable, logged, and the process terminated.
A future version will address this instability but as it is a feature which requires modification of the core engine, it is not scheduled for review until after the stable release.