Thank you MR. Hipp... Dušan
2013/7/15 Richard Hipp <d...@sqlite.org> > 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 > _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users