Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Bug#849657: ceph: FTBFS on mips(el): g++: virtual memory exhausted: Cannot allocate memory

51 views
Skip to first unread message

Emilio Pozuelo Monfort

unread,
Dec 29, 2016, 11:10:03 AM12/29/16
to
Source: ceph
Version: 10.2.5-2
Severity: serious

Your package failed to build on mips/el:

g++ -DHAVE_CONFIG_H -I. -D__CEPH__ -D_FILE_OFFSET_BITS=64 -D_THREAD_SAFE -D__STDC_FORMAT_MACROS -D_GNU_SOURCE -DCEPH_LIBDIR=\"/usr/lib/mipsel-linux-gnu\" -DCEPH_PKGLIBDIR=\"/usr/lib/mipsel-linux-gnu/ceph\" -DGTEST_USE_OWN_TR1_TUPLE=0 -D_REENTRANT -Wdate-time -D_FORTIFY_SOURCE=2 -I/usr/include/nss -I/usr/include/nspr -Wall -Wtype-limits -Wignored-qualifiers -Winit-self -Wpointer-arith -Werror=format-security -fno-strict-aliasing -fsigned-char -rdynamic -ftemplate-depth-1024 -Wnon-virtual-dtor -Wno-invalid-offsetof -O2 -g -pipe -Wall -Wp,-U_FORTIFY_SOURCE -Wp,-D_FORTIFY_SOURCE=2 -fexceptions --param=ssp-buffer-size=4 -fPIE -fstack-protector-strong -Wstrict-null-sentinel -g -O2 -fdebug-prefix-map=/«PKGBUILDDIR»=. -fstack-protector-strong -Wformat -Werror=format-security -c -o tools/rbd/action/Resize.o tools/rbd/action/Resize.cc
virtual memory exhausted: Cannot allocate memory
Makefile:24792: recipe for target 'test/encoding/ceph_dencoder-ceph_dencoder.o' failed

Full logs at: https://buildd.debian.org/status/package.php?p=ceph

Emilio

-- System Information:
Debian Release: stretch/sid
APT prefers unstable
APT policy: (800, 'unstable'), (700, 'experimental'), (650, 'testing'), (500, 'unstable-debug'), (500, 'testing-debug')
Architecture: amd64 (x86_64)
Foreign Architectures: i386, armhf

Kernel: Linux 4.8.0-2-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_GB.utf8, LC_CTYPE=en_GB.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Emilio Pozuelo Monfort

unread,
Dec 30, 2016, 4:10:02 AM12/30/16
to
On 29/12/16 20:56, Gaudenz Steinlin wrote:
>
> Hi Emilio
>
> Emilio Pozuelo Monfort <po...@debian.org> writes:
>
>> Source: ceph
>> Version: 10.2.5-2
>> Severity: serious
>>
>> Your package failed to build on mips/el:
>>
>> g++ -DHAVE_CONFIG_H -I. -D__CEPH__ -D_FILE_OFFSET_BITS=64 -D_THREAD_SAFE -D__STDC_FORMAT_MACROS -D_GNU_SOURCE -DCEPH_LIBDIR=\"/usr/lib/mipsel-linux-gnu\" -DCEPH_PKGLIBDIR=\"/usr/lib/mipsel-linux-gnu/ceph\" -DGTEST_USE_OWN_TR1_TUPLE=0 -D_REENTRANT -Wdate-time -D_FORTIFY_SOURCE=2 -I/usr/include/nss -I/usr/include/nspr -Wall -Wtype-limits -Wignored-qualifiers -Winit-self -Wpointer-arith -Werror=format-security -fno-strict-aliasing -fsigned-char -rdynamic -ftemplate-depth-1024 -Wnon-virtual-dtor -Wno-invalid-offsetof -O2 -g -pipe -Wall -Wp,-U_FORTIFY_SOURCE -Wp,-D_FORTIFY_SOURCE=2 -fexceptions --param=ssp-buffer-size=4 -fPIE -fstack-protector-strong -Wstrict-null-sentinel -g -O2 -fdebug-prefix-map=/«PKGBUILDDIR»=. -fstack-protector-strong -Wformat -Werror=format-security -c -o tools/rbd/action/Resize.o tools/rbd/action/Resize.cc
>> virtual memory exhausted: Cannot allocate memory
>> Makefile:24792: recipe for target
>> 'test/encoding/ceph_dencoder-ceph_dencoder.o' failed
>
> I already noticed this and tried to contact mi...@buildd.debian.org and
> mip...@buildd.debian.org. Unfortunately nobody responded yet, so I don't
> know if the message was even received or not. AFAIK these are the
> correct contact points for buildd issues.

This is not a buildd issue but a porting issue. debian-mips@ldo is better for
this. Added to Cc.

> I don't think there is much I can do about this bug and I'm not
> convinced this is a issue in ceph. If the buildds are unable to build
> the package we can either completely remove ceph for mips/mipsel or try
> to only build the client part and have a reduced set of packages on
> these architectures.

IIRC there are some flags you can pass to reduce memory usage. Most notably
ggc-min-expand (which is going to be changed in GCC itself, but afaik it hasn't
happened yet). So you could try adding

--param ggc-min-expand=10

to CFLAGS/CXXFLAGS.

I'd try that before thinking about removing the package from mips.

Cheers,
Emilio

> The second option would have the advantage that no changes to the
> reverse dependencies (notably qemu) are needed.
>
> Gaudenz
>

Mathieu Malaterre

unread,
Dec 30, 2016, 6:10:02 AM12/30/16
to
Reducing -O2 to -O1 did solve the issue for openvdb on mips* (kudos Jochen)

https://packages.qa.debian.org/o/openvdb/news/20161224T090717Z.html

Gaudenz Steinlin

unread,
Jan 5, 2017, 8:10:03 AM1/5/17
to

Hi

Aurelien Jarno <aure...@aurel32.net> writes:

> On 2016-12-30 10:06, Emilio Pozuelo Monfort wrote:
>> On 29/12/16 20:56, Gaudenz Steinlin wrote:
>
> The problem is indeed a memory issue, not that the buildd doesn't have
> enough memory, but just that you can allocate only 2GB per process on a
> 32-bit MIPS machine. As Emilio said, the above GCC flag should help to
> reduce the memory usage by running the garbage collector more often.
>
> However gcc 6.3 seems to have improved the situation a bit, so I given
> back the packages, I hope they will build now. Otherwise I have a patch
> ready to change the GCC defaults. That said GCC upstream consider it's a
> bug in the garbage collector [1], so that should be fixed instead and the
> patch should be considered as a temporary workaround.
>

Aurelien thanks for taking care and resheduling the build. Unfortunately
this did not solve the problem. But setting the following variables
solves the virtual memory issue for me on the mipsel porterbox (eller):

export DEB_CFLAGS_MAINT_APPEND= --param ggc-min-expand=10 -O1
export DEB_CXXFLAGS_MAINT_APPEND= --param ggc-min-expand=10 -O1
export DEB_CFLAGS_MAINT_STRIP= -O2
export DEB_CXXFLAGS_MAINT_STRIP= -O2

But unfortunately the build fails at another point. See the log below.
I'm not sure how to fix this. If I understand it right these atomic
operations are just not supported on mipsel[1]. Or is there a way to make
them work?

Gaudenz

[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56296

libtool: link: g++ -I/usr/include/nss -I/usr/include/nspr -Wall -Wtype-limits -Wignored-qualifiers -Winit-self -Wpointer-arith -Werror=format-security -fno-strict-aliasing -fsigned-char -rdynamic -ftemplate-depth-1024 -Wnon-virtual-dtor -Wno-invalid-offsetof -O2 -g -pipe -Wall -Wp,-U_FORTIFY_SOURCE -Wp,-D_FORTIFY_SOURCE=2 -fexceptions --param=ssp-buffer-size=4 -fPIE -fstack-protector-strong -Wstrict-null-sentinel -I../src/gmock/include -I../src/gmock/include -I../src/gmock/gtest/include -I../src/gmock/gtest/include -g -fdebug-prefix-map=/home/gaudenz/ceph=. -fstack-protector-strong -Wformat -Werror=format-security --param ggc-min-expand=10 -O1 -pie -Wl,-z -Wl,relro -Wl,-z -Wl,now -Wl,-z -Wl,relro -Wl,-z -Wl,now -o .libs/ceph_test_cls_rgw test/cls_rgw/ceph_test_cls_rgw-test_cls_rgw.o /usr/lib/mipsel-linux-gnu/libatomic_ops.a -Wl,--as-needed ./.libs/librados.so ./.libs/libcls_rgw_client.a ../src/gmock/lib/.libs/libgmock_main.a ../src/gmock/lib/.libs/libgmock.a ../src/gmock/gtest/lib/.libs/libgtest.a ./.libs/libglobal.a -lpthread -lm ./.libs/libradostest.a ./.libs/libcommon.a -ldl -lboost_thread -lboost_random -lrt -lblkid -luuid -lnss3 -lnssutil3 -lsmime3 -lssl3 -lplds4 -lplc4 -lnspr4 -lboost_iostreams -lboost_system -pthread
rocksdb/librocksdb.a(memtable.o): In function `std::__atomic_base<unsigned long long>::load(std::memory_order) const':
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
rocksdb/librocksdb.a(memtable.o):/usr/include/c++/6/bits/atomic_base.h:396: more undefined references to `__atomic_load_8' follow
rocksdb/librocksdb.a(memtable.o): In function `std::__atomic_base<unsigned long long>::store(unsigned long long, std::memory_order)':
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
rocksdb/librocksdb.a(memtable.o): In function `std::__atomic_base<unsigned long long>::load(std::memory_order) const':
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
rocksdb/librocksdb.a(memtable.o): In function `std::__atomic_base<unsigned long long>::store(unsigned long long, std::memory_order)':
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
rocksdb/librocksdb.a(env_posix.o): In function `std::__atomic_base<unsigned long long>::store(unsigned long long, std::memory_order)':
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
rocksdb/librocksdb.a(env_posix.o): In function `std::__atomic_base<unsigned long long>::load(std::memory_order) const':
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
rocksdb/librocksdb.a(env_posix.o): In function `std::__atomic_base<unsigned long long>::store(unsigned long long, std::memory_order)':
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
rocksdb/librocksdb.a(file_reader_writer.o): In function `std::__atomic_base<long long>::load(std::memory_order) const':
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
rocksdb/librocksdb.a(db_impl.o): In function `std::__atomic_base<unsigned long long>::load(std::memory_order) const':
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
rocksdb/librocksdb.a(db_impl.o):/usr/include/c++/6/bits/atomic_base.h:396: more undefined references to `__atomic_load_8' follow
rocksdb/librocksdb.a(db_impl.o): In function `std::__atomic_base<unsigned long long>::store(unsigned long long, std::memory_order)':
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
rocksdb/librocksdb.a(db_impl.o): In function `std::__atomic_base<unsigned long long>::load(std::memory_order) const':
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
rocksdb/librocksdb.a(db_impl.o):/usr/include/c++/6/bits/atomic_base.h:396: more undefined references to `__atomic_load_8' follow
rocksdb/librocksdb.a(db_impl.o): In function `std::__atomic_base<unsigned long long>::fetch_add(unsigned long long, std::memory_order)':
/usr/include/c++/6/bits/atomic_base.h:514: undefined reference to `__atomic_fetch_add_8'
/usr/include/c++/6/bits/atomic_base.h:514: undefined reference to `__atomic_fetch_add_8'
rocksdb/librocksdb.a(db_impl.o): In function `std::__atomic_base<unsigned long long>::load(std::memory_order) const':
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
rocksdb/librocksdb.a(db_impl.o):/usr/include/c++/6/bits/atomic_base.h:396: more undefined references to `__atomic_load_8' follow
rocksdb/librocksdb.a(db_impl.o): In function `std::__atomic_base<unsigned long long>::fetch_add(unsigned long long, std::memory_order)':
/usr/include/c++/6/bits/atomic_base.h:514: undefined reference to `__atomic_fetch_add_8'
/usr/include/c++/6/bits/atomic_base.h:514: undefined reference to `__atomic_fetch_add_8'
/usr/include/c++/6/bits/atomic_base.h:514: undefined reference to `__atomic_fetch_add_8'
/usr/include/c++/6/bits/atomic_base.h:514: undefined reference to `__atomic_fetch_add_8'
/usr/include/c++/6/bits/atomic_base.h:514: undefined reference to `__atomic_fetch_add_8'
rocksdb/librocksdb.a(db_impl.o):/usr/include/c++/6/bits/atomic_base.h:514: more undefined references to `__atomic_fetch_add_8' follow
rocksdb/librocksdb.a(db_impl.o): In function `std::__atomic_base<unsigned long long>::load(std::memory_order) const':
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
rocksdb/librocksdb.a(db_impl.o): In function `std::__atomic_base<unsigned long long>::store(unsigned long long, std::memory_order)':
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
rocksdb/librocksdb.a(db_impl.o): In function `rocksdb::DBImpl::Recover(std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, bool, bool)':
./src/rocksdb/db/db_impl.cc:1028: undefined reference to `__atomic_load_8'
rocksdb/librocksdb.a(db_impl.o): In function `std::__atomic_base<unsigned long long>::load(std::memory_order) const':
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
rocksdb/librocksdb.a(db_impl.o): In function `std::__atomic_base<unsigned long long>::fetch_add(unsigned long long, std::memory_order)':
/usr/include/c++/6/bits/atomic_base.h:514: undefined reference to `__atomic_fetch_add_8'
/usr/include/c++/6/bits/atomic_base.h:514: undefined reference to `__atomic_fetch_add_8'
/usr/include/c++/6/bits/atomic_base.h:514: undefined reference to `__atomic_fetch_add_8'
/usr/include/c++/6/bits/atomic_base.h:514: undefined reference to `__atomic_fetch_add_8'
rocksdb/librocksdb.a(db_impl.o): In function `std::__atomic_base<unsigned long long>::load(std::memory_order) const':
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
rocksdb/librocksdb.a(db_impl.o): In function `rocksdb::DBImpl::WriteImpl(rocksdb::WriteOptions const&, rocksdb::WriteBatch*, rocksdb::WriteCallback*)':
./src/rocksdb/db/db_impl.cc:4184: undefined reference to `__atomic_store_8'
rocksdb/librocksdb.a(db_impl.o): In function `std::__atomic_base<unsigned long long>::store(unsigned long long, std::memory_order)':
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
rocksdb/librocksdb.a(flush_job.o): In function `std::__atomic_base<unsigned long long>::fetch_add(unsigned long long, std::memory_order)':
/usr/include/c++/6/bits/atomic_base.h:514: undefined reference to `__atomic_fetch_add_8'
/usr/include/c++/6/bits/atomic_base.h:514: undefined reference to `__atomic_fetch_add_8'
rocksdb/librocksdb.a(flush_job.o): In function `std::__atomic_base<unsigned long long>::load(std::memory_order) const':
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
rocksdb/librocksdb.a(forward_iterator.o): In function `std::__atomic_base<unsigned long long>::load(std::memory_order) const':
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
rocksdb/librocksdb.a(forward_iterator.o):/usr/include/c++/6/bits/atomic_base.h:396: more undefined references to `__atomic_load_8' follow
rocksdb/librocksdb.a(version_set.o): In function `std::__atomic_base<unsigned long long>::store(unsigned long long, std::memory_order)':
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
rocksdb/librocksdb.a(version_set.o): In function `std::__atomic_base<unsigned long long>::load(std::memory_order) const':
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
rocksdb/librocksdb.a(version_set.o): In function `rocksdb::VersionSet::LogAndApply(rocksdb::ColumnFamilyData*, rocksdb::MutableCFOptions const&, rocksdb::VersionEdit*, rocksdb::InstrumentedMutex*, rocksdb::Directory*, bool, rocksdb::ColumnFamilyOptions const*)':
./src/rocksdb/db/version_set.cc:2093: undefined reference to `__atomic_fetch_add_8'
rocksdb/librocksdb.a(version_set.o): In function `std::__atomic_base<unsigned long long>::fetch_add(unsigned long long, std::memory_order)':
/usr/include/c++/6/bits/atomic_base.h:514: undefined reference to `__atomic_fetch_add_8'
/usr/include/c++/6/bits/atomic_base.h:514: undefined reference to `__atomic_fetch_add_8'
rocksdb/librocksdb.a(version_set.o): In function `std::__atomic_base<unsigned long long>::load(std::memory_order) const':
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
rocksdb/librocksdb.a(version_set.o): In function `std::__atomic_base<unsigned long long>::store(unsigned long long, std::memory_order)':
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
rocksdb/librocksdb.a(version_set.o): In function `std::__atomic_base<unsigned long long>::load(std::memory_order) const':
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
rocksdb/librocksdb.a(version_set.o): In function `std::__atomic_base<unsigned long long>::store(unsigned long long, std::memory_order)':
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
rocksdb/librocksdb.a(version_set.o): In function `std::__atomic_base<unsigned long long>::load(std::memory_order) const':
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
rocksdb/librocksdb.a(thread_status_updater.o): In function `std::__atomic_base<unsigned long long>::store(unsigned long long, std::memory_order)':
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
rocksdb/librocksdb.a(thread_status_updater.o):/usr/include/c++/6/bits/atomic_base.h:374: more undefined references to `__atomic_store_8' follow
rocksdb/librocksdb.a(thread_status_updater.o): In function `std::__atomic_base<unsigned long long>::fetch_add(unsigned long long, std::memory_order)':
/usr/include/c++/6/bits/atomic_base.h:514: undefined reference to `__atomic_fetch_add_8'
/usr/include/c++/6/bits/atomic_base.h:514: undefined reference to `__atomic_fetch_add_8'
rocksdb/librocksdb.a(thread_status_updater.o): In function `std::__atomic_base<unsigned long long>::load(std::memory_order) const':
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
rocksdb/librocksdb.a(thread_status_updater.o):/usr/include/c++/6/bits/atomic_base.h:396: more undefined references to `__atomic_load_8' follow
rocksdb/librocksdb.a(thread_status_updater.o): In function `std::__atomic_base<unsigned long long>::store(unsigned long long, std::memory_order)':
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
rocksdb/librocksdb.a(thread_status_updater.o):/usr/include/c++/6/bits/atomic_base.h:374: more undefined references to `__atomic_store_8' follow
rocksdb/librocksdb.a(column_family.o): In function `std::__atomic_base<unsigned long long>::load(std::memory_order) const':
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
rocksdb/librocksdb.a(column_family.o): In function `std::__atomic_base<unsigned long long>::operator++()':
/usr/include/c++/6/bits/atomic_base.h:296: undefined reference to `__atomic_fetch_add_8'
/usr/include/c++/6/bits/atomic_base.h:296: undefined reference to `__atomic_fetch_add_8'
rocksdb/librocksdb.a(column_family.o): In function `std::__atomic_base<unsigned long long>::load(std::memory_order) const':
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
rocksdb/librocksdb.a(compaction_job.o): In function `std::__atomic_base<unsigned long long>::fetch_add(unsigned long long, std::memory_order)':
/usr/include/c++/6/bits/atomic_base.h:514: undefined reference to `__atomic_fetch_add_8'
/usr/include/c++/6/bits/atomic_base.h:514: undefined reference to `__atomic_fetch_add_8'
rocksdb/librocksdb.a(compaction_job.o): In function `std::__atomic_base<unsigned long long>::load(std::memory_order) const':
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
rocksdb/librocksdb.a(transaction_log_impl.o): In function `std::__atomic_base<unsigned long long>::load(std::memory_order) const':
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
rocksdb/librocksdb.a(transaction_log_impl.o):/usr/include/c++/6/bits/atomic_base.h:396: more undefined references to `__atomic_load_8' follow
rocksdb/librocksdb.a(rate_limiter.o): In function `std::__atomic_base<long long>::store(long long, std::memory_order)':
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
/usr/include/c++/6/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
rocksdb/librocksdb.a(rate_limiter.o): In function `std::__atomic_base<long long>::load(std::memory_order) const':
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
/usr/include/c++/6/bits/atomic_base.h:396: undefined reference to `__atomic_load_8'
collect2: error: ld returned 1 exit status
Makefile:15928: recipe for target 'ceph_objectstore_bench' failed
make[4]: *** [ceph_objectstore_bench] Error 1
make[4]: *** Waiting for unfinished jobs....
make[4]: Leaving directory '/home/gaudenz/ceph/src'
Makefile:30865: recipe for target 'all-recursive' failed
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory '/home/gaudenz/ceph/src'
Makefile:12571: recipe for target 'all' failed
make[2]: *** [all] Error 2
make[2]: Leaving directory '/home/gaudenz/ceph/src'
Makefile:703: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/gaudenz/ceph'
dh_auto_build: make -j4 returned exit code 2
debian/rules:62: recipe for target 'build' failed
make: *** [build] Error 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2

--
PGP: 836E 4F81 EFBB ADA7 0852 79BF A97A 7702 BAF9 1EF5
signature.asc

Aurelien Jarno

unread,
Jan 5, 2017, 3:20:02 PM1/5/17
to
On 2017-01-05 14:00, Gaudenz Steinlin wrote:
>
> Hi
>
> Aurelien Jarno <aure...@aurel32.net> writes:
>
> > On 2016-12-30 10:06, Emilio Pozuelo Monfort wrote:
> >> On 29/12/16 20:56, Gaudenz Steinlin wrote:
> >
> > The problem is indeed a memory issue, not that the buildd doesn't have
> > enough memory, but just that you can allocate only 2GB per process on a
> > 32-bit MIPS machine. As Emilio said, the above GCC flag should help to
> > reduce the memory usage by running the garbage collector more often.
> >
> > However gcc 6.3 seems to have improved the situation a bit, so I given
> > back the packages, I hope they will build now. Otherwise I have a patch
> > ready to change the GCC defaults. That said GCC upstream consider it's a
> > bug in the garbage collector [1], so that should be fixed instead and the
> > patch should be considered as a temporary workaround.
> >
>
> Aurelien thanks for taking care and resheduling the build. Unfortunately
> this did not solve the problem. But setting the following variables
> solves the virtual memory issue for me on the mipsel porterbox (eller):
>
> export DEB_CFLAGS_MAINT_APPEND= --param ggc-min-expand=10 -O1
> export DEB_CXXFLAGS_MAINT_APPEND= --param ggc-min-expand=10 -O1
> export DEB_CFLAGS_MAINT_STRIP= -O2
> export DEB_CXXFLAGS_MAINT_STRIP= -O2

Thanks for testing that.

I have found that the issue is also workarounded by keeping -O2 and
--param ggc-min-expand=5, which is a quite aggressive value. The patch I
have for GCC reduced the value to 30 (which corresponds to disabling the
heuristics). Also note that the build failure actually only concern the
testsuite, the code itself builds without any change.

I'll report the bug to upstream with the preprocessed source as I have
been advised.

Aurelien

--
Aurelien Jarno GPG: 4096R/1DDD8C9B
aure...@aurel32.net http://www.aurel32.net
signature.asc

Gaudenz Steinlin

unread,
Jan 8, 2017, 7:10:02 AM1/8/17
to
Thanks for the hint. I'll try another upload with --param
ggc-min-expand=5. Unfortunately there is no easy way to disable the
testsuite build without also disabling some debug binaries that are part
of the binary packages.

Gaudenz
0 new messages