On Sat, Jul 13, 2013 at 5:14 AM, Dušan Paulovič <paulo...@gisoft.cz> wrote:
> Hello, > we are currently facing problem with Access violation exception caused by > function sqlite3_open_v2 trying to load extensions from unloaded DLLs. > New interface added: sqlite3_cancel_auto_extension(X). You can use this to cancel prior calls to sqlite3_auto_extension() before unloading the DLL. http://www.sqlite.org/draft/c3ref/cancel_auto_extension.html Download snapshots containing this change from http://www.sqlite.org/draft/download.html > > How it happens: > - There are 2 (or more) plugin DLLs in main application which are linked to > SQLite. > - These plugins can be loaded and uloaded by user. > - Main application itself does not use SQLite, so each plugin using SQLite > must be linked to it. > - When any plugin is loaded, it registers its entry point using interface > sqlite3_auto_extension. > - So when 2 (or more) plugins are loaded, each registers its entry point(s) > to the same SQLite module instance. > - When one of these plugins is going to be unloaded by user, it can not use > sqlite3_reset_auto_extension, > because that would uninstall also all entry points of another plugins. > So it happens, that SQlite holds entry point(s) to DLL which is unloaded. > - Now, if user executes any command from remaining DLL, it invokes > sqlite3_open_v2, > SQLite invokes all registered entry points including those pointing to > released memory, > so system raises Access Viloation exception. > > Possible solution of this issue would be a way to 'uninstall' entry point. > something like: > int sqlite3_remove_auto_extension(void (*xEntryPoint)(void)); > > Also it would be fine to be able to load static extensions to separate > connections: > something like: > int sqlite3_load_static_extension(sqlite3 *db, void (*xEntryPoint)(void)); > > If you would need any additional information about issue, > please contact me at: paulo...@gisoft.cz > > Additional info: > SQLite Version: 3.7.14.1, Source ID: 2012-10-04 19:37:12 > 091570e46d04e84b67228e0bdbcd6e1fb60c6bdb > > Perhaps irrelevant in this case: > OS: Windows Vista > Main Application: Bentley MicroStation V8i > Plugins: MDL (MicroStation Development Library) > > Regards, > Dusan Paulovic > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > -- D. Richard Hipp d...@sqlite.org _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users