Bug 236490

Summary: databases/firebird25-client: gpre_current crashes during build with ICU 64 (blocks 62 ports)
Product: Ports & Packages Reporter: Jan Beich <jbeich>
Component: Individual Port(s)Assignee: Jose Alonso Cardenas Marquez <acm>
Status: Closed FIXED    
Severity: Affects Only Me CC: jjachuf, jlaffaye, m.tsatsenko, mbeis, pi, rm, tz, yuri, zi
Priority: --- Keywords: needs-patch
Version: LatestFlags: bugzilla: maintainer-feedback? (acm)
jbeich: maintainer-feedback? (jjachuf)
jbeich: maintainer-feedback? (jlaffaye)
jbeich: maintainer-feedback? (joneum)
jbeich: maintainer-feedback? (m.tsatsenko)
jbeich: maintainer-feedback? (mbeis)
jbeich: maintainer-feedback? (pi)
jbeich: maintainer-feedback? (rm)
jbeich: maintainer-feedback? (yuri)
jbeich: maintainer-feedback? (zi)
jbeich: maintainer-feedback? (tz)
Hardware: Any   
OS: Any   
Bug Depends on:    
Bug Blocks: 236325    

Description Jan Beich freebsd_committer 2019-03-12 15:19:01 UTC
gmake[3]: Entering directory '/usr/ports/databases/firebird25-client/work/Firebird-2.5.8.27089-0/gen'
../gen/firebird/bin/gpre_current -n -z -gds_cxx -raw -ids ../src/jrd/dpm.epp ../temp/boot/jrd/dpm.cpp
gmake[3]: *** [../gen/make.rules:82: ../temp/boot/jrd/dpm.cpp] Segmentation fault (core dumped)

Program received signal SIGSEGV, Segmentation fault.
Firebird::MemoryPool::allocate_nothrow (this=0x0, size=32, upper_size=0) at ../src/common/classes/alloc.cpp:789
789             if (parent_redirect && size <= OS_EXTENT_SIZE -
(gdb) backtrace full
#0  Firebird::MemoryPool::allocate_nothrow (this=0x0, size=32, upper_size=0)
    at ../src/common/classes/alloc.cpp:789
        g = {lock = 0x7fffffffcdf8}
        result = 0x800743b73 <_rtld_bind+259>
#1  0x000000000036bb41 in Firebird::MemoryPool::allocate (this=0x0, size=32)
    at ../src/common/classes/alloc.cpp:899
        result = 0x80076a400
#2  0x000000000036e63f in Firebird::MemoryPool::globalAlloc (s=32)
    at ../src/include/../common/classes/alloc.h:402
No locals.
#3  0x000000000036d995 in operator new (s=32) at ../src/common/classes/alloc.cpp:2227
No locals.
#4  0x0000000800d47689 in std::__1::__libcpp_allocate (__size=32, __align=8) at /usr/include/c++/v1/new:239
No locals.
#5  0x0000000800d473a3 in std::__1::allocator<std::__1::__shared_ptr_emplace<std::__1::mutex, std::__1::allocator<std::__1::mutex> > >::allocate (this=0x7fffffffcff8, __n=1) at /usr/include/c++/v1/memory:1814
No locals.
#6  0x0000000800d4723d in std::__1::shared_ptr<std::__1::mutex>::make_shared<>() ()
    at /usr/include/c++/v1/memory:4330
        __a2 = {<No data fields>}
        __hold2 = {
          __ptr_ = {<std::__1::__compressed_pair_elem<std::__1::__shared_ptr_emplace<std::__1::mutex, std::__1::allocator<std::__1::mutex> >*, 0, false>> = {
              __value_ = 0x1}, <std::__1::__compressed_pair_elem<std::__1::__allocator_destructor<std::__1::allocator<std::__1::__shared_ptr_emplace<std::__1::mutex, std::__1::allocator<std::__1::mutex> > > >, 1, false>> = {
              __value_ = {__alloc_ = @0x800d46ea0, __s_ = 34375090216}}, <No data fields>}}
        __r = <optimized out>
#7  0x0000000800d471f4 in std::__1::make_shared<std::__1::mutex> () at /usr/include/c++/v1/memory:4710
No locals.
#8  0x0000000800d46f06 in std::__1::condition_variable_any::condition_variable_any (
    this=0x800eb7000 <gInProgressValueAddedCond>) at /usr/include/c++/v1/condition_variable:171
No locals.
#9  0x0000000800d46b75 in icu::UConditionVar::UConditionVar (this=0x800eb7000 <gInProgressValueAddedCond>)
    at umutex.cpp:65
No locals.
#10 0x0000000800e9a9a4 in __cxx_global_var_init.1(void) () at unifiedcache.cpp:25
No locals.
#11 0x0000000800e9be5e in _GLOBAL__sub_I_unifiedcache.cpp () from /usr/local/lib/libicuuc.so.64
        gCacheInitOnce = {
          fState = {<std::__1::__atomic_base<int, true>> = {<std::__1::__atomic_base<int, false>> = {
                __a_ = 0}, <No data fields>}, <No data fields>}, fErrCode = U_ZERO_ERROR}
        gCache = 0x0
        gCacheMutex = {<icu::UMemory> = {<No data fields>}, fMutex = {__m_ = 0x0}}
        gInProgressValueAddedCond = {<icu::UMemory> = {<No data fields>}, fCV = {__cv_ = {__cv_ = 0x0},
            __mut_ = {__ptr_ = 0x0, __cntrl_ = 0x0}}}
#12 0x0000000800743899 in objlist_call_init (list=<optimized out>, lockstate=<optimized out>)
    at /usr/srclibexec/rtld-elf/rtld.c:2713
        obj = <optimized out>
        saved_msg = 0x0
        elm = <optimized out>
        init_addr = 0x800ea4028
        index = 14
#13 0x0000000800742119 in _rtld (sp=<optimized out>, exit_proc=0x7fffffffe030, objp=0x7fffffffe038)
    at /usr/srclibexec/rtld-elf/rtld.c:760
        aux_info = {0x0, 0x0, 0x0, 0x7fffffffe2b8, 0x7fffffffe2c8, 0x7fffffffe2d8, 0x7fffffffe2e8,
          0x7fffffffe318, 0x7fffffffe2f8, 0x7fffffffe308, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7fffffffe338,
          0x7fffffffe358, 0x7fffffffe368, 0x7fffffffe348, 0x7fffffffe378, 0x7fffffffe388, 0x7fffffffe398,
          0x7fffffffe3a8, 0x7fffffffe3b8, 0x7fffffffe328, 0x0, 0x0}
        buf = '\000' <repeats 1023 times>
        argcp = <optimized out>
        argv = 0x7fffffffe058
        argc = <optimized out>
        env = 0x7fffffffe0a0
        i = <optimized out>
        auxp = <optimized out>
        argv0 = 0x7fffffffe468 "/usr/ports/databases/firebird25-client/work/Firebird-2.5.8.27089-0/gen/firebird/bin/gpre_current"
        fd = <optimized out>
        phdr = <optimized out>
        search_in_path = 0 '\000'
        rtld_argc = <optimized out>
        st = {st_dev = 0, st_ino = 0, st_nlink = 0, st_mode = 0, st_padding0 = 0, st_uid = 0, st_gid = 0,
          st_padding1 = 0, st_rdev = 0, st_atim = {tv_sec = 0, tv_nsec = 0}, st_mtim = {tv_sec = 0,
            tv_nsec = 0}, st_ctim = {tv_sec = 0, tv_nsec = 0}, st_birthtim = {tv_sec = 0, tv_nsec = 0},
          st_size = 0, st_blocks = 0, st_blksize = 0, st_flags = 0, st_gen = 0, st_spare = {0, 0, 0, 0, 0, 0, 0,
            0, 0, 0}}
        dir_enable = 0 '\000'
        envp = <optimized out>
        auxpf = <optimized out>
        aux = 0x7fffffffe2b8
        library_path_rpath = <optimized out>
        imgentry = <optimized out>
        phnum = <optimized out>
        preload_tail = <optimized out>
        last_interposer = <optimized out>
        obj = <optimized out>
        entry = <optimized out>
        initlist = {stqh_first = 0x800761820, stqh_last = 0x800761a80}
        lockstate = {lockstate = 2, env = {{_sjb = {0 <repeats 12 times>}}}}
        kexecpath = <optimized out>
        explicit_fd = <optimized out>
#14 0x0000000800740019 in .rtld_start () at /usr/srclibexec/rtld-elf/amd64/rtld_start.S:39
No locals.
#15 0x0000000000000000 in ?? ()
No symbol table info available.

http://package22.nyi.freebsd.org/data/112amd64-default-PR236325/2019-03-10_21h16m41s/logs/errors/firebird25-client-2.5.8_2.log
http://package23.nyi.freebsd.org/data/112i386-default-PR236325/2019-03-10_20h52m23s/logs/errors/firebird25-client-2.5.8_2.log
http://package22.nyi.freebsd.org/data/120amd64-default-PR236325/2019-03-12_10h00m22s/logs/errors/firebird25-client-2.5.8_2.log
http://package23.nyi.freebsd.org/data/120i386-default-PR236325/2019-03-12_10h00m35s/logs/errors/firebird25-client-2.5.8_2.log
Comment 1 Jan Beich freebsd_committer 2019-03-12 15:23:17 UTC
Is it possible to disable Firebird custom memory allocator? I'd like to check the code with -fsanitize=address.
Comment 2 Jan Beich freebsd_committer 2019-03-12 15:27:16 UTC
Can one of the maintainers of consumer ports help? I plan to mark this port as BROKEN unless someone proposes a fix or determines it's a bug in ICU.
Comment 3 Torsten Zuehlsdorff freebsd_committer 2019-03-13 11:51:18 UTC
> Can one of the maintainers of consumer ports help? 

How can we help you?
Comment 4 Jan Beich freebsd_committer 2019-03-13 13:51:29 UTC
(In reply to Torsten Zuehlsdorff from comment #3)
> How can we help you?

Try either:
- Reproduce and try to find a workaround or a fix
- Reproduce and check if the latest development version is affected
- Report upstream and post a link here
Comment 5 Jan Beich freebsd_committer 2019-03-27 21:16:42 UTC
I can no longer reproduce.