I have a minor memory leak with a specific order of actions, though I might miss something here. (Checked with version 3.35.5)
A virtual table implementation registers a user-defined function (doesn't matter before or after sqlite3_create_module_v2) with a sqlite3_create_function call. On xDestroy callback (when the db is being closed) it unregisters the function by calling sqlite3_create_function with xFunc parameter having NULL value. In this case my program detects a small leak (21-28 bytes), when there's no matching free for a malloc call. The program is in Delphi with sqlite static linking and malloc/free mapped to the Delphi rtl GetMem/FreeMem calls and detection was made by FastMM memory manager.
The conventional order of actions like registering and unregistering a function before the db is being closed or xDestroy is called doesn't produce the leak.
Also if I don't unregister the function (probably I can do this anyway, but currently it's irrelevant), there's also no leak.