Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 579290

Summary: app-office/akonadi-server fails at runtime with dev-libs/boost-1.60.0
Product: Gentoo Linux Reporter: Matt Whitlock <gentoo>
Component: Current packagesAssignee: C++ Team [disbanded] <cpp+disabled>
Status: RESOLVED INVALID    
Severity: normal CC: kde, kkrizka, mark+gentoobugs, roberto.castagnola
Priority: Normal    
Version: unspecified   
Hardware: All   
OS: Linux   
URL: https://svn.boost.org/trac/boost/ticket/11905
Whiteboard:
Package list:
Runtime testing required: ---

Description Matt Whitlock 2016-04-08 01:49:30 UTC
After upgrading to dev-libs/boost-1.60.0 and rebuilding app-office/akonadi-server, Akonadi fails to start. Attempting to use the `akonadictl` tool gives an error, even for trivial command lines:

$ akonadictl --help
Failed to parse command line arguments: character conversion failed
Run 'akonadictl --help' to obtain a list of valid command line arguments.

Akonadi functionality is restored after downgrading to dev-libs/boost-1.58.0 and rebuilding app-office/akonadi-server again.

Suggest adding a DEPEND="!=dev-libs/boost-1.60.0*" in app-office/akonadi-server.

Problem appears in both app-office/akonadi-server-1.13.0-r2 and app-office/akonadi-server-1.13.1_pre20160203-r1.
Comment 1 Mark Nowiasz 2016-04-17 08:10:07 UTC
Same here - downgrading (and therefore, recompiling all boost related packages such as libreoffice) boost to 1.58 make akonadi work again.
Comment 2 Alex Turbov 2016-05-16 18:14:13 UTC
`akonadictl --help` works fine for me...

boost 1.60 and app-office/akonadi-server-1.13.1_pre20160203-r1. all build w/ gcc 5.3.0.
Comment 3 Matt Whitlock 2016-05-18 17:36:43 UTC
I don't know how Alex Turbov (Comment 2) gets it to work. Akonadi fails again with Boost 1.61.

$ akonadictl --help
Failed to parse command line arguments: character conversion failed
Run 'akonadictl --help' to obtain a list of valid command line arguments.

Why can't Boost be slotted?
Comment 4 David Seifert gentoo-dev 2016-05-18 18:01:01 UTC
Slotting Boost would amount to a massive undertaking, as you have to avoid any one application bringing in libraries linked with different versions, as boost has a very brittle ABI. While I feel your pain, if you believe you are up to the task, you can try slotting it yourself. I am not aware of any distribution doing such things.
Comment 5 Johannes Huber (RETIRED) gentoo-dev 2016-05-26 13:32:48 UTC
Can not confirm that runtime fails with dev-libs/boost-1.61.0
Comment 6 Matt Whitlock 2016-05-27 20:37:06 UTC
I discovered why this was failing after several hours of debugging in GDB and scratching my head as to why certain methods were being invoked when the caller was actually trying to invoke a different method. It seemed to be a violation of the One-Definition Rule, as the virtual function table entries seemed to be shifted down one function from what they should have been. As it turns out, this is exactly what was happening. Akonadi was being compiled with outdated Boost headers. Evidently CMake's FindBoost module prefers versioned include directory names over the system default.

On my system, I had an orphaned "/usr/include/boost-1_51" directory with an apparently complete copy of the Boost include files for Boost 1.51. Akonadi's CMake run was selecting this directory for the include path rather than the system default path (/usr/include) where Boost 1.61's headers are installed.

I do not know why /usr/include/boost-1_51 was not removed when I uninstalled Boost 1.51, but as no packages were claiming it now, I blew it away. Now the Akonadi build includes the correct Boost headers, and the failure at runtime is gone.