Are you using sqlite3_exec() with a callback to managed code? If so, would you be willing to show the declarations, with attributes, that you use for sqlite3_exec() and your callback? If you are not using such a callback, your experience is a testament to the usual, one-way interop being a heavily trodden set of code paths.