[MDEV-21370] dynamic_cast' not permitted with '-fno-rtti' Created: 2019-12-20  Updated: 2020-02-03  Resolved: 2020-02-03

Status: Closed
Project: MariaDB Server
Component/s: Storage Engine - RocksDB
Affects Version/s: 10.4.11
Fix Version/s: N/A

Type: Bug Priority: Major
Reporter: hiroshi HATAKE Assignee: Sergei Petrunia
Resolution: Not a Bug Votes: 0
Labels: None
Environment:

Arch Linux, gcc 9.2.0


Attachments: Text File CMakeCache.txt     File build-10.4.11.log    

 Description   

RocksDB storage engine does not compile with gcc 9.2.0:


In file included from /usr/include/c++/9.2.0/cassert:44,
from /vagrant/abs/mariadb-with-mroonga/src/mariadb-10.4.11/storage/rocksdb/rocksdb/include/rocksdb/compaction_filter.h:11,
from /vagrant/abs/mariadb-with-mroonga/src/mariadb-10.4.11/storage/rocksdb/rocksdb/db/merge_helper.h:16,
from /vagrant/abs/mariadb-with-mroonga/src/mariadb-10.4.11/storage/rocksdb/rocksdb/db/compaction/compaction_iterator.h:15,
from /vagrant/abs/mariadb-with-mroonga/src/mariadb-10.4.11/storage/rocksdb/rocksdb/db/compaction/compaction_job.h:21,
from /vagrant/abs/mariadb-with-mroonga/src/mariadb-10.4.11/storage/rocksdb/rocksdb/db/db_impl/db_impl.h:23,
from /vagrant/abs/mariadb-with-mroonga/src/mariadb-10.4.11/storage/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc:13:
/vagrant/abs/mariadb-with-mroonga/src/mariadb-10.4.11/storage/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc: In member function 'void rocksdb::OptimisticTransactionDBImpl::ReinitializeTransaction(rocksdb::Transaction*, const rocksdb::WriteOptions&, const rocksdb::OptimisticTransactionOptions&)':
/vagrant/abs/mariadb-with-mroonga/src/mariadb-10.4.11/storage/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc:84:50: error: 'dynamic_cast' not permitted with '-fno-rtti'
84 | assert(dynamic_cast<OptimisticTransaction*>(txn) != nullptr);

^
[ 28%] Building CXX object storage/rocksdb/CMakeFiles/rocksdblib.dir/rocksdb/utilities/transactions/pessimistic_transaction.cc.o
make[2]: *** [storage/rocksdb/CMakeFiles/rocksdblib.dir/build.make:2520: storage/rocksdb/CMakeFiles/rocksdblib.dir/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc.o] Error 1
make[2]: *** Waiting for unfinished jobs....


 Comments   
Comment by Marko Mäkelä [ 2019-12-27 ]

cosmo0920, I wonder how your CMakeCache.txt ended up containing the following:

CMAKE_CXX_FLAGS:STRING=-fPIC -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt -fno-strict-aliasing -DBIG_JOINS=1 -felide-constructors -fno-rtti -fno-delete-null-pointer-checks

Did you set some of those in CXXFLAGS, or did you update the source tree to 10.4 from some older version, without deleting CMakeCache.txt in between?

There should be no -fno-rtti in the MariaDB build configuration in 10.4 (except for handler_socket, mroonga, spider, tokudb). It was removed in 10.4.5.

Comment by hiroshi HATAKE [ 2020-01-05 ]

Gotcha! It's my fault.

My used building rule is here:
https://github.com/cosmo0920/AUR-for-Groonga-family/blob/99fce48c3eeeee6342844c497f0b8975566e7b6e/abs/mariadb-with-mroonga/PKGBUILD#L81

`-fno-rtti` is specified there....

And this should be fixed on my environment.

Generated at Thu Feb 08 09:06:37 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.