Subject | Re: Firebird 2.5 built from source code on AIX 6.1 - core dump |
---|---|
Author | |
Post date | 2014-06-04T20:00:44Z |
Hi Alex,
I'd like to share some results of debugging.
Assert happens after the following sequence of function calls:
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 177 in file "/export/home/ilmbuild/TEST/FB/Firebird-2.5.2.26540-0/src/lock/lock.cpp" ($t1)
177 Firebird::MutexLockGuard guard(g_mapMutex);
...
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):
(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 = (mtx_mutex = (
(__mt_word = (504403158265589406, 504403158265523696, 4563807096, 1152921504606840656, 1152921504606842736, 4295013508, 675840, 8))
)), lhb_history = 0, lhb_scan_interval = 8, lhb_acquire_spins = 117440512, lhb_acquires = 1328, lhb_acquire_blocks = 0, lhb_acquire_retries = 0, lhb_retry_success = 0, lhb_enqs = 0, lhb_converts = 0, lhb_downgrades = 0, lhb_deqs = 0, lhb_read_data = 0, lhb_write_data = 0, lhb_query_data = 0, lhb_operations = (0, 0, 0, 0, 0, 0, 0), lhb_waits = 0, lhb_denies = 0, lhb_timeouts = 0, lhb_blocks = 0, lhb_wakeups = 0, lhb_scans = 0, lhb_deadlocks = 0, lhb_data = (
(srq_forward = 352, srq_backward = 352)
(srq_forward = 360, srq_backward = 360)
(srq_forward = 368, srq_backward = 368)
(srq_forward = 376, srq_backward = 376)
(srq_forward = 384, srq_backward = 384)
(srq_forward = 392, srq_backward = 392)
(srq_forward = 400, srq_backward = 400)
), lhb_hash = (
(srq_forward = 408, srq_backward = 408)
))
But according to lock_proto.h (line line 107 and above), lhb_version should be = LHB_VERSION = PLATFORM_LHB_VERSION + BASE_LHB_VERSION, i.e. 128+17 = 145 decimal, or 221 octal.
Actually, this is the value of lhb_version which I see during previous call of LockManager::attach_shared_file (during execution of isc_create_database(), line 22 in create_db.cpp file):
(dbx) where
Jrd::LockManager::create(const Firebird::StringBase<Firebird::StringComparator>&)(id = &(...)), line 177 in "lock.cpp"
unnamed block in jrd8_create_database(user_status = 0x0ffffffffffff6f0, filename = "/export/home/ilmbuild/TEST/FB/Firebird-2.5.2.26540-0/empty.fdb", handle = 0x0ffffffffffff388, dpb_length = 14, dpb = "^AM"), line 2135 in "jrd.cpp"
jrd8_create_database(user_status = 0x0ffffffffffff6f0, filename = "/export/home/ilmbuild/TEST/FB/Firebird-2.5.2.26540-0/empty.fdb", handle = 0x0ffffffffffff388, dpb_length = 14, dpb = "^AM"), line 2135 in "jrd.cpp"
unnamed block in isc_create_database(user_status = 0x0ffffffffffff6f0, file_length = 0, file_name = "empty.fdb", public_handle = 0x0ffffffffffff790, dpb_length = 0, dpb = (nil), = 0), line 2069 in "why.cpp"
isc_create_database(user_status = 0x0ffffffffffff6f0, file_length = 0, file_name = "empty.fdb", public_handle = 0x0ffffffffffff790, dpb_length = 0, dpb = (nil), = 0), line 2069 in "why.cpp"
main(argc = 2, argv = 0x0ffffffffffff930), line 22 in "create_db.cpp"
(dbx) c
[2] stopped in 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))
(dbx) c
[1] stopped in Jrd::LockManager::attach_shared_file(long*) at line 337 in file "/export/home/ilmbuild/TEST/FB/Firebird-2.5.2.26540-0/src/lock/lock.cpp" ($t1)
337 get_shared_file_name(name);
(dbx) n
stopped in Jrd::LockManager::attach_shared_file(long*) at line 339 in file "/export/home/ilmbuild/TEST/FB/Firebird-2.5.2.26540-0/src/lock/lock.cpp" ($t1)
339 m_header = (lhb*) ISC_map_file(status, name.c_str(), initialize, this, m_memorySize, &m_shmem);
(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 = '^A', lhb_version = '\221', lhb_secondary = 8488, lhb_active_owner = 0, lhb_owners = (srq_forward = 12, srq_backward = 12), lhb_processes = (srq_forward = 20, srq_backward = 20), lhb_free_processes = (srq_forward = 28, srq_backward = 28), lhb_free_owners = (srq_forward = 36, srq_backward = 36), lhb_free_locks = (srq_forward = 44, srq_backward = 44), lhb_free_requests = (srq_forward = 52, srq_backward = 52), lhb_length = 1048576, lhb_used = 20800, lhb_hash_slots = 1009, lhb_flags = 1, lhb_mutex = (mtx_mutex = (
(__mt_word = (0, 0, 0, 0, 1029, 5, 0, 0))
)), lhb_history = 8512, lhb_scan_interval = 10, lhb_acquire_spins = 0, lhb_acquires = 0, lhb_acquire_blocks = 0, lhb_acquire_retries = 0, lhb_retry_success = 0, lhb_enqs = 0, lhb_converts = 0, lhb_downgrades = 0, lhb_deqs = 0, lhb_read_data = 0, lhb_write_data = 0, lhb_query_data = 0, lhb_operations = (0, 0, 0, 0, 0, 0, 0), lhb_waits = 0, lhb_denies = 0, lhb_timeouts = 0, lhb_blocks = 0, lhb_wakeups = 0, lhb_scans = 0, lhb_deadlocks = 0, lhb_data = (
(srq_forward = 352, srq_backward = 352)
(srq_forward = 360, srq_backward = 360)
(srq_forward = 368, srq_backward = 368)
(srq_forward = 376, srq_backward = 376)
(srq_forward = 384, srq_backward = 384)
(srq_forward = 392, srq_backward = 392)
(srq_forward = 400, srq_backward = 400)
), lhb_hash = (
(srq_forward = 408, srq_backward = 408)
))
Any ideas would be appreciated.
Thanks!
P.S. I didn't get a fix, can you send it by mail vvm101@... ?
I'd like to share some results of debugging.
Assert happens after the following sequence of function calls:
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 177 in file "/export/home/ilmbuild/TEST/FB/Firebird-2.5.2.26540-0/src/lock/lock.cpp" ($t1)
177 Firebird::MutexLockGuard guard(g_mapMutex);
...
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):
(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 = (mtx_mutex = (
(__mt_word = (504403158265589406, 504403158265523696, 4563807096, 1152921504606840656, 1152921504606842736, 4295013508, 675840, 8))
)), lhb_history = 0, lhb_scan_interval = 8, lhb_acquire_spins = 117440512, lhb_acquires = 1328, lhb_acquire_blocks = 0, lhb_acquire_retries = 0, lhb_retry_success = 0, lhb_enqs = 0, lhb_converts = 0, lhb_downgrades = 0, lhb_deqs = 0, lhb_read_data = 0, lhb_write_data = 0, lhb_query_data = 0, lhb_operations = (0, 0, 0, 0, 0, 0, 0), lhb_waits = 0, lhb_denies = 0, lhb_timeouts = 0, lhb_blocks = 0, lhb_wakeups = 0, lhb_scans = 0, lhb_deadlocks = 0, lhb_data = (
(srq_forward = 352, srq_backward = 352)
(srq_forward = 360, srq_backward = 360)
(srq_forward = 368, srq_backward = 368)
(srq_forward = 376, srq_backward = 376)
(srq_forward = 384, srq_backward = 384)
(srq_forward = 392, srq_backward = 392)
(srq_forward = 400, srq_backward = 400)
), lhb_hash = (
(srq_forward = 408, srq_backward = 408)
))
But according to lock_proto.h (line line 107 and above), lhb_version should be = LHB_VERSION = PLATFORM_LHB_VERSION + BASE_LHB_VERSION, i.e. 128+17 = 145 decimal, or 221 octal.
Actually, this is the value of lhb_version which I see during previous call of LockManager::attach_shared_file (during execution of isc_create_database(), line 22 in create_db.cpp file):
(dbx) where
Jrd::LockManager::create(const Firebird::StringBase<Firebird::StringComparator>&)(id = &(...)), line 177 in "lock.cpp"
unnamed block in jrd8_create_database(user_status = 0x0ffffffffffff6f0, filename = "/export/home/ilmbuild/TEST/FB/Firebird-2.5.2.26540-0/empty.fdb", handle = 0x0ffffffffffff388, dpb_length = 14, dpb = "^AM"), line 2135 in "jrd.cpp"
jrd8_create_database(user_status = 0x0ffffffffffff6f0, filename = "/export/home/ilmbuild/TEST/FB/Firebird-2.5.2.26540-0/empty.fdb", handle = 0x0ffffffffffff388, dpb_length = 14, dpb = "^AM"), line 2135 in "jrd.cpp"
unnamed block in isc_create_database(user_status = 0x0ffffffffffff6f0, file_length = 0, file_name = "empty.fdb", public_handle = 0x0ffffffffffff790, dpb_length = 0, dpb = (nil), = 0), line 2069 in "why.cpp"
isc_create_database(user_status = 0x0ffffffffffff6f0, file_length = 0, file_name = "empty.fdb", public_handle = 0x0ffffffffffff790, dpb_length = 0, dpb = (nil), = 0), line 2069 in "why.cpp"
main(argc = 2, argv = 0x0ffffffffffff930), line 22 in "create_db.cpp"
(dbx) c
[2] stopped in 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))
(dbx) c
[1] stopped in Jrd::LockManager::attach_shared_file(long*) at line 337 in file "/export/home/ilmbuild/TEST/FB/Firebird-2.5.2.26540-0/src/lock/lock.cpp" ($t1)
337 get_shared_file_name(name);
(dbx) n
stopped in Jrd::LockManager::attach_shared_file(long*) at line 339 in file "/export/home/ilmbuild/TEST/FB/Firebird-2.5.2.26540-0/src/lock/lock.cpp" ($t1)
339 m_header = (lhb*) ISC_map_file(status, name.c_str(), initialize, this, m_memorySize, &m_shmem);
(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 = '^A', lhb_version = '\221', lhb_secondary = 8488, lhb_active_owner = 0, lhb_owners = (srq_forward = 12, srq_backward = 12), lhb_processes = (srq_forward = 20, srq_backward = 20), lhb_free_processes = (srq_forward = 28, srq_backward = 28), lhb_free_owners = (srq_forward = 36, srq_backward = 36), lhb_free_locks = (srq_forward = 44, srq_backward = 44), lhb_free_requests = (srq_forward = 52, srq_backward = 52), lhb_length = 1048576, lhb_used = 20800, lhb_hash_slots = 1009, lhb_flags = 1, lhb_mutex = (mtx_mutex = (
(__mt_word = (0, 0, 0, 0, 1029, 5, 0, 0))
)), lhb_history = 8512, lhb_scan_interval = 10, lhb_acquire_spins = 0, lhb_acquires = 0, lhb_acquire_blocks = 0, lhb_acquire_retries = 0, lhb_retry_success = 0, lhb_enqs = 0, lhb_converts = 0, lhb_downgrades = 0, lhb_deqs = 0, lhb_read_data = 0, lhb_write_data = 0, lhb_query_data = 0, lhb_operations = (0, 0, 0, 0, 0, 0, 0), lhb_waits = 0, lhb_denies = 0, lhb_timeouts = 0, lhb_blocks = 0, lhb_wakeups = 0, lhb_scans = 0, lhb_deadlocks = 0, lhb_data = (
(srq_forward = 352, srq_backward = 352)
(srq_forward = 360, srq_backward = 360)
(srq_forward = 368, srq_backward = 368)
(srq_forward = 376, srq_backward = 376)
(srq_forward = 384, srq_backward = 384)
(srq_forward = 392, srq_backward = 392)
(srq_forward = 400, srq_backward = 400)
), lhb_hash = (
(srq_forward = 408, srq_backward = 408)
))
Any ideas would be appreciated.
Thanks!
P.S. I didn't get a fix, can you send it by mail vvm101@... ?