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

Reply via email to