Plugin ABI compat between v2.3.8 and v2.3.9

Alexander Strasser eclipse7 at gmx.net
Wed Jun 24 16:37:10 EEST 2020


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 at 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


More information about the dovecot mailing list