Unaligned Memory Access in MET_format
-------------------------------------
Key: CORE-5233
URL: http://tracker.firebirdsql.org/browse/CORE-5233
Project: Firebird Core
Issue Type: Bug
Components: Build Issues / Porting
Affects Versions: 3.0.0
Environment: Debian sid, sparc64
Reporter: James Clarke
When building employee.fdb on sparc64, a bus error (unaligned memory access) is
produced:
sh -x -c "lockfile -1 ../../gen/Release/firebird/bin/build-db.lock &&
./empbuild ../../gen/examples/employee.fdb; res=\$?; rm -f
../../gen/Release/firebird/bin/build-db.lock; exit \$res"
+ lockfile -1 ../../gen/Release/firebird/bin/build-db.lock
ERROR: ld.so: object 'libeatmydata.so' from LD_PRELOAD cannot be preloaded
(cannot open shared object file): ignored.
+ ./empbuild ../../gen/examples/employee.fdb
creating database ../../gen/examples/employee.fdb
Turning forced writes off
Creating tables
Turning off indices and triggers
Bus error
Couldn't turn off indices and triggers
+ res=44
+ rm -f ../../gen/Release/firebird/bin/build-db.lock
+ exit 44
Makefile.examples:125: recipe for target '../../gen/examples/employee.fdb'
failed
This was introduced in
https://github.com/FirebirdSQL/firebird/commit/218f419b5c28093149c5bd5c6194f64091c37b1c,
as the additional descriptors are placed back-to-back without any alignment.
From gdb:
Program received signal SIGBUS, Bus error.
MET_format (tdbb=tdbb@entry=0x7feffff8c88,
relation=relation@entry=0xfff8000104652448, number=<optimized out>) at
/build/firebird3.0-dW50KH/firebird3.0-3.0.0.32483.ds4/temp/Release/jrd/met.cpp:5514
5514 dsc desc = *odsDflDesc;
(gdb) bt
#0 MET_format (tdbb=tdbb@entry=0x7feffff8c88,
relation=relation@entry=0xfff8000104652448, number=<optimized out>) at
/build/firebird3.0-dW50KH/firebird3.0-3.0.0.32483.ds4/temp/Release/jrd/met.cpp:5514
#1 0xfff80001026c098c in make_format (tdbb=tdbb@entry=0x7feffff8c88,
relation=relation@entry=0xfff8000104652448,
version=version@entry=0x7feffff7de8, stack=<optimized out>,
stack@entry=0xfff8000107ef9ad8)
at
/build/firebird3.0-dW50KH/firebird3.0-3.0.0.32483.ds4/temp/Release/jrd/dfw.cpp:9543
#2 0xfff80001026c2588 in make_version (tdbb=0x7feffff8c88, phase=<optimized
out>, work=0xfff8000107446f68, transaction=0xfff8000107445bf0) at
/build/firebird3.0-dW50KH/firebird3.0-3.0.0.32483.ds4/temp/Release/jrd/dfw.cpp:10220
#3 0xfff80001026b9710 in DFW_perform_work (tdbb=tdbb@entry=0x7feffff8c88,
transaction=transaction@entry=0xfff8000107445bf0) at
/build/firebird3.0-dW50KH/firebird3.0-3.0.0.32483.ds4/temp/Release/jrd/dfw.cpp:4513
#4 0xfff800010264c15c in TRA_commit (tdbb=tdbb@entry=0x7feffff8c88,
transaction=transaction@entry=0xfff8000107445bf0,
retaining_flag=retaining_flag@entry=false)
at /build/firebird3.0-dW50KH/firebird3.0-3.0.0.32483.ds4/src/jrd/tra.cpp:376
#5 0xfff800010267b94c in commit (tdbb=tdbb@entry=0x7feffff8c88,
transaction=transaction@entry=0xfff8000107445bf0,
retaining_flag=retaining_flag@entry=false) at
/build/firebird3.0-dW50KH/firebird3.0-3.0.0.32483.ds4/src/jrd/jrd.cpp:5458
#6 0xfff800010267c090 in JRD_commit_transaction
(tdbb=tdbb@entry=0x7feffff8c88, transaction=0xfff8000107445bf0) at
/build/firebird3.0-dW50KH/firebird3.0-3.0.0.32483.ds4/src/jrd/jrd.cpp:7670
#7 0xfff8000102687bf0 in Jrd::JTransaction::commit
(this=this@entry=0xfff80001000dbf88,
user_status=user_status@entry=0x7feffff8e90) at
/build/firebird3.0-dW50KH/firebird3.0-3.0.0.32483.ds4/src/jrd/jrd.cpp:2178
#8 0xfff800010269a400 in Firebird::ITransactionBaseImpl<Jrd::JTransaction,
Firebird::CheckStatusWrapper,
Firebird::IReferenceCountedImpl<Jrd::JTransaction,
Firebird::CheckStatusWrapper,
Firebird::Inherit<Firebird::IVersionedImpl<Jrd::JTransaction,
Firebird::CheckStatusWrapper, Firebird::Inherit<Firebird::ITransaction> > > >
>::cloopcommitDispatcher (self=0xfff80001000dbf90, status=0x7feffff9048)
at
/build/firebird3.0-dW50KH/firebird3.0-3.0.0.32483.ds4/src/include/firebird/IdlFbInterfaces.h:7045
#9 0xfff800010028ef00 in
Firebird::ITransaction::commit<Firebird::CheckStatusWrapper>
(status=0x7feffff9040, this=0xfff80001000dbf90) at
/build/firebird3.0-dW50KH/firebird3.0-3.0.0.32483.ds4/src/include/firebird/IdlFbInterfaces.h:1107
#10 Why::YTransaction::commit (this=this@entry=0xfff8000100041068,
status=status@entry=0x7feffff9040) at
/build/firebird3.0-dW50KH/firebird3.0-3.0.0.32483.ds4/src/yvalve/why.cpp:4750
#11 0xfff80001002acd80 in Firebird::ITransactionBaseImpl<Why::YTransaction,
Firebird::CheckStatusWrapper,
Firebird::IReferenceCountedImpl<Why::YTransaction,
Firebird::CheckStatusWrapper,
Firebird::Inherit<Firebird::IVersionedImpl<Why::YTransaction,
Firebird::CheckStatusWrapper, Firebird::Inherit<Firebird::ITransaction> > > >
>::cloopcommitDispatcher (self=0xfff8000100041070, status=0x1000018a440
<fbStatusObj+8>)
at
/build/firebird3.0-dW50KH/firebird3.0-3.0.0.32483.ds4/src/include/firebird/IdlFbInterfaces.h:7045
#12 0x000001000001c7e4 in commit_trans(Firebird::ITransaction**) ()
#13 0x0000010000028d90 in process_statement(char const*) ()
#14 0x000001000002ac74 in do_isql() ()
#15 0x000001000002d778 in ISQL_main(int, char**) ()
#16 0xfff800010100602c in __libc_start_main () from
/lib/sparc64-linux-gnu/libc.so.6
#17 0x000001000000a52c in _start ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb) p odsDflDesc
$1 = (const Ods::Descriptor *) 0x7feffff7803
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
------------------------------------------------------------------------------
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel