Yes, this is the problem - this function is not called. But very confusing
thing is that sometimes it's called, and no core dump in this case.
My first impression is - the pointer gets corrupted. I'm trying to figure
out the reason. Unfortunately, dbx doesn't show any information about the
content of the function pointer, just address. And I can't use gdb since it
doesn't support the code compiled by XL compiler.
I see 2 other threads running, do you know if these threads may affect the
pointer to LockManager::initialize?
Thanks,
Vadim.
On Fri, Jun 6, 2014 at 4:29 AM, Alex Peshkoff <[email protected]> wrote:
> On 06/05/14 01:17, vv m wrote:
> > Hi All,
> >
> > I'm trying to built FB from the source code v. 2.5.2.26540-0 on AIX 6.1
> > (PPC). I've made some minor changes in the build script to let it create
> > ./configure script, also a couple of source code files slightly changed
> > (mostly to avoid conflicts).
> > But now I'm facing a problem - attempt to create/access to DB file causes
> > core dump in Jrd::LockManager::attach_shared_file() function.
> > Actually, it happens during the build when empty.fdb and other DB files
> are
> > created. Manually retrying create_db I can get all all .fdb files created
> > (files are created in spite of core dump).
> >
> > AIX 6.1 PPC, IBM XL C/C++ for AIX, V12.1
> >
> > My settings:
> > export CC=xlc_r
> > export CXX=xlC_r
> > export CFLAGS="-q64 -gxlc -D_REENTRANT"
> > export CXXFLAGS="-q64 -gxlC D_REENTRANT"
> >
> > ./autogen.sh --enable-debug=yes
> >
> > Also I set FIREBIRD to .../firebird, FIREBIRD_LOCK to one of temp
> folders,
> > and LIBPATH (LD_LIBRARY_PATH) to .../firebird/lib
> >
> > I'd like to share some results of debugging.
> >
> > Assert happens after the following sequence of function calls (in
> create_db
> > exec):
> > main at lineline 49 in file
> >
> "/export/home/ilmbuild/TEST/FB/Firebird-2.5.2.26540-0/src/utilities/create_db.cpp"
> > ($t1)
> > 49 isc_attach_database(sv, 0, argv[1], &db,
> > dpb.getBufferLength(),
> > -->
> > jrd8_attach_database at line 1039 in file
> > "/export/home/ilmbuild/TEST/FB/Firebird-2.5.2.26540-0/src/jrd/jrd.cpp"
> ($t1)
> > 1039 dbb->dbb_lock_mgr =
> > LockManager::create(dbb->getUniqueFileId());
> > --->
> >
> > Jrd::LockManager::create(const
> > Firebird::StringBase<Firebird::StringComparator>&) at line 182 in file
> > "/export/home/ilmbuild/TEST/FB/Firebird-2.5.2.26540-0/src/lock/lock.cpp"
> > ($t1)
> > 182 lockMgr = new LockManager(id);
> > --->
> > Jrd::LockManager::LockManager(const
> > Firebird::StringBase<Firebird::StringComparator>&) at line 232 in file
> > "/export/home/ilmbuild/TEST/FB/Firebird-2.5.2.26540-0/src/lock/lock.cpp"
> > ($t1)
> > 232 if (!attach_shared_file(local_status))
> > --->
> > Jrd::LockManager::attach_shared_file(long*)(this = 0x0700000000006df0,
> > status = 0x0fffffffffffe680), line 339 in "lock.cpp"
> > --->
> > ISC_map_file(long*,const char*,void(*)(void*,sh_mem*,bool),void*,unsigned
> > int,sh_mem*) at line 2335 in file
> >
> "/export/home/ilmbuild/TEST/FB/Firebird-2.5.2.26540-0/src/jrd/isc_sync.cpp"
> > ($t1)
> > 2335 gds__prefix_lock(expanded_filename, filename);
> > ...
> > ISC_map_file(long*,const char*,void(*)(void*,sh_mem*,bool),void*,unsigned
> > int,sh_mem*)(status_vector = 0x0fffffffffffe680, filename =
> > "fb_lock_80000030000000010000000001619004", init_routine =
> > 0x000000011018c928, init_arg = 0x0700000000006df0, length = 1048576,
> > shmem_data = 0x0700000000006e20), line 2526 in "isc_sync.cpp"
> > <---
> > Jrd::LockManager::attach_shared_file(long*)(this = 0x0700000000006df0,
> > status = 0x0fffffffffffe680), line 341 in "lock.cpp"
> >
> > After that point, m_header (and it's lhb_version field):
> > (dbx) n
> > stopped in Jrd::LockManager::attach_shared_file(long*) at line 341 in
> file
> > "/export/home/ilmbuild/TEST/FB/Firebird-2.5.2.26540-0/src/lock/lock.cpp"
> > ($t1)
> > 341 if (!m_header)
> > (dbx) p *m_header
> > (lhb_type = '^G', *lhb_version = '\0'*, lhb_secondary = 139264,
> > lhb_active_owner = 1, lhb_owners = (srq_forward = 8769248, srq_backward =
> > 1), lhb_processes = (srq_forward = 5283304, srq_backward = 117440512),
> > lhb_free_processes = (srq_forward = 28144, srq_backward = 1),
> > lhb_free_owners = (srq_forward = 268503808, srq_backward = 117440512),
> > lhb_free_locks = (srq_forward = 93728, srq_backward = 2621504),
> > lhb_free_requests = (srq_forward = 29392, srq_backward = 0), lhb_length =
> > 1320, lhb_used = 1, lhb_hash_slots = 56, lhb_flags = 43932, lhb_mutex =
>
> Header looks like completely trashed. Or (sooner of all) not initialized
> properly.
> Please check - is function
> void LockManager::initialize(sh_mem* shmem_data, bool initializeMemory)
> (it's in lock.cpp) called during ISC_map_file() operation or not.
>
>
>
> ------------------------------------------------------------------------------
> Learn Graph Databases - Download FREE O'Reilly Book
> "Graph Databases" is the definitive new guide to graph databases and their
> applications. Written by three acclaimed leaders in the field,
> this first edition is now available. Download your free book today!
> http://p.sf.net/sfu/NeoTech
> Firebird-Devel mailing list, web interface at
> https://lists.sourceforge.net/lists/listinfo/firebird-devel
>
------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel