Opened 6 years ago

Last modified 5 years ago

#12516 reopened Bugs

Missing boost::serialization::array_wrapper in built serialization binary

Reported by: michele.de.stefano@… Owned by: Robert Ramey
Milestone: To Be Determined Component: serialization
Version: Boost Development Trunk Severity: Regression
Keywords: Cc:

Description

When building code that links against libboost_serialization with the intel compiler I receive a link error saying

undefined reference to `boost::serialization::array_wrapper<unsigned long> const boost::serialization::make_array<unsigned long>(unsigned long*, unsigned long)

This bug is affecting also Boost MPI, that exploits Boost Serialization.
The bug is not present into Boost 1.59.0. I've not tried Boost 1.62.0.

Some more details:

OS: CentOS6
Compiler:
Intel 16, over gcc 4.9.2 (tried building with both -std=c++11 or -std=c++14).
Tried also with Intel 13, over gcc 4.8.5 (-std=c++11) and the issue is the same.

Change History (17)

comment:1 by Robert Ramey, 6 years ago

how about a small example which provokes the error

comment:2 by Robert Ramey, 6 years ago

never mind - I see that the intel test on the test matrix is failing for this very reason. Better yet, I know what's causing it. I'll try to fix this soon.

comment:3 by Robert Ramey, 6 years ago

Resolution: fixed
Status: newclosed

I've checked in a changed to the develop branch which I believe will address this

comment:4 by michele.de.stefano@…, 6 years ago

Thanks Robert.

I'm sorry but I was having this issue on proprietary code and I would have to write another source reproducing the error for being able to share it with you. I did not have the time to do this yesterday.

I'm glad you managed to find the cause of the issue on your own anyway.

Thanks again.
Best regards.

Michele De Stefano

comment:5 by Chuckles <coder.chuckles@…>, 6 years ago

Has this fix been included in 1.63.0? I do not see it in the release notes and still experience a serialization error with 1.63.0. Thank you.

comment:6 by Charlie <coder.chuckles@…>, 6 years ago

Milestone: Boost 1.63.0To Be Determined
Resolution: fixed
Status: closedreopened
Version: Boost 1.61.0Boost 1.63.0

Has this fix been included in 1.63.0? I do not see it in the release notes and still experience a serialization error with 1.63.0. Thank you.

comment:7 by Robert Ramey, 6 years ago

I believe that this is fixed now in the develop branch. Should be in the next boost release. Feel free to check the develop branch and report back.

comment:8 by anonymous, 6 years ago

I can confirm that I get this error in Boost 1.63.0 as well as 1.62.0.

1.60.0 seems to be fine.

comment:9 by maxime.boissonneault@…, 6 years ago

Should have signed my comment...

comment:10 by jason.tong@…, 6 years ago

Version: Boost 1.63.0Boost Development Trunk

Hello everyone:

I can also confirm that this error exists while compiling with gcc493 using the boost code from the git develop branch.

boost/numeric/ublas/storage.hpp:494:18: error: 'make_array' is not a member of 'boost::serialization'

ar & serialization::make_array(data_, s);

Thanks

comment:11 by benjamin.bihler@…, 6 years ago

I am using odeint and I have tried switching from Boost 1.63.0 to Boost 1.64.0. My previously compilable code now doesn't compile anymore when using MinGW-w64 with g++ 5.2.0. The compilation error reads:

In file included from D:\boost_1_64_0/boost/numeric/ublas/vector.hpp:21:0,

from D:\boost_1_64_0/boost/numeric/odeint/util/ublas_wrapper.hpp:23, from D:\boost_1_64_0/boost/numeric/odeint.hpp:25, from ..\src/Geodesics/GeodesicSolver.h:20, from ..\src\Geodesics\BoundaryConditions\WireStopCondition.cpp:12:

D:\boost_1_64_0/boost/numeric/ublas/storage.hpp: In member function 'void boost::numeric::ublas::unbounded_array<T, ALLOC>::serialize(Archive&, unsigned int)': D:\boost_1_64_0/boost/numeric/ublas/storage.hpp:299:18: error: 'make_array' is not a member of 'boost::serialization'

ar & serialization::make_array(data_, s);

comment:12 by bb@…, 5 years ago

Just to add to this, using Boost 1.64.0, Apple's clang-800.0.42.1 (Apple LLVM version 8.0.0, x86_64-apple-darwin15.6.0) reports:

…/numeric/ublas/storage.hpp:299:33: No member named 'make_array' in namespace 'boost::serialization' …/numeric/ublas/storage.hpp:494:33: No member named 'make_array' in namespace 'boost::serialization' …/numeric/ublas/matrix.hpp:5977:33: No member named 'make_array' in namespace 'boost::serialization'

The "include stack": …In file included from …/numeric/odeint/stepper/runge_kutta_dopri5.hpp:28: #include <boost/numeric/odeint/stepper/runge_kutta_dopri5.hpp> #include <boost/numeric/odeint/algebra/algebra_dispatcher.hpp> #include <boost/numeric/ublas/vector.hpp> #include <boost/numeric/ublas/storage.hpp>

The whole code still compiles fine using Boost 1.63.0

If there are other things I can report or analyze to be of any help, please let me know!

Best regards, BB

comment:13 by anonymous, 5 years ago

I also see the error in numeric/ublas/storage.hpp on Linux, GCC 4.8.2. No problems with 1.63.

comment:14 by anonymous, 5 years ago

I confirm that the error in storage.hpp still exists in 1.64.0 and can be reproduced on GCC 4.8.5 on Linux Mint 17

comment:15 by dmitry.rojkov@…, 5 years ago

This is the fix missing in the v1.64 release for the "'make_array' is not a member of 'boost::serialization'" error

https://github.com/boostorg/serialization/commit/1d86261581230e2dc5d617a9b16287d326f3e229

comment:16 by anonymous, 5 years ago

This seems to work: there are no compilation error anymore (while the functionality of the executable code still seems to be the same). Thank you!

comment:17 by anonymous, 5 years ago

No compilation error for me either. Thanks!

Note: See TracTickets for help on using tickets.