On 2020-06-16 22:47 +0200, Alexander Strasser wrote:
On 2020-06-16 20:32 +0200, Alexander Strasser wrote:
On 2020-06-16 12:37 -0000, Stuart Henderson wrote:
On 2020-06-15, Alexander Strasser eclipse7@gmx.net wrote:
I had some imap crashes (sig11) starting at the end of 2019 after an upgrade of dovecot.
[...]
So I suspect there were ABI incompatible changes and it was forgotten to bump the minimum Plugin-ABI version supported.
dovecot-2.3.8/configure #define DOVECOT_ABI_VERSION "2.3.ABIv8($PACKAGE_VERSION)"
dovecot-2.3.9/configure #define DOVECOT_ABI_VERSION "2.3.ABIv9($PACKAGE_VERSION)"
Did you disable version checking? (version_ignore = yes)
Thanks for the hint.
I couldn't find version_ignore anywhere in the configs. I also don't remember having changed it.
It's interesting that the ABI check didn't snap.
If I'm on the right track and the code src/lib/module-dir.c is responsible for loading plugins and doing the ABI check, then I think it does only check ABI compat for modules that define a symbol named <module-name>_version .
At first this looks a bit unsafe to me.
Though it explains why in my case there was no ABI check failing, as I found out the plugin does not define a version symbol.
The implementation should be really trivial, so I guess I will add it to the plugin.
I played around with the version in the plugin. This seems to work. If the plugin ABI version is different from the dovecot ABI version, the plugin is not loaded and a warning is printed:
imap(beastd-mail): Error: Couldn't load required plugin /usr/lib/dovecot/modules/lib_fetchmail_wakeup_plugin.so: Module is for different ABI version 1.2.3 (we have 2.3.ABIv10(2.3.10.1))
I find the behaviour a bit surprising, but as I understand now, it's the plugin's fault and not a missed ABI bump in dovecot as I initially suspected.
I'm still not sure why the behaviour is to assume a compatible ABI if no version is found. I would be curious, so if someone knows...
[...]
Alexander