Check the TZ env variable before defaulting to /etc/localtime.

Robert Fewell 14ubobit at gmail.com
Mon Sep 26 07:12:46 EDT 2016


Hi,

There is a problem with this commit if the TZ variable does not exist,
Gnucash fails to start with the following backtrace...

Starting program: /usr/bin/gnucash --g-fatal-warnings
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
terminate called after throwing an instance of 'std::logic_error'
  what():  basic_string::_S_construct null not valid

Program received signal SIGABRT, Aborted.
0x00007ffff59f82e7 in __GI_raise (sig=sig at entry=6) at
../sysdeps/unix/sysv/linux/raise.c:55
55    ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0  0x00007ffff59f82e7 in __GI_raise (sig=sig at entry=6) at
../sysdeps/unix/sysv/linux/raise.c:55
#1  0x00007ffff59f976a in __GI_abort () at abort.c:89
#2  0x00007ffff239f2c5 in __gnu_cxx::__verbose_terminate_handler() () from
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/libstdc++.so.6
#3  0x00007ffff239d036 in ?? () from
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/libstdc++.so.6
#4  0x00007ffff239d081 in std::terminate() () from
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/libstdc++.so.6
#5  0x00007ffff239d287 in __cxa_throw () from
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/libstdc++.so.6
#6  0x00007ffff23feb36 in std::__throw_logic_error(char const*) () from
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/libstdc++.so.6
#7  0x00007ffff240c078 in char* std::string::_S_construct<char const*>(char
const*, char const*, std::allocator<char> const&,
std::forward_iterator_tag) () from
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/libstdc++.so.6
#8  0x00007ffff240c502 in std::basic_string<char, std::char_traits<char>,
std::allocator<char> >::basic_string(char const*, std::allocator<char>
const&) () from /usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/libstdc++.so.6
#9  0x00007ffff6c35e76 in IANAParser::find_tz_file (name=...) at
gnc-timezone.cpp:356
#10 IANAParser::IANAParser::IANAParser (name=..., this=0x7fffffffe4b0) at
gnc-timezone.cpp:397
#11 TimeZoneProvider::TimeZoneProvider (this=0x7ffff6e99750 <tzp>,
tzname=...) at gnc-timezone.cpp:607
#12 0x00007ffff6c28efb in TimeZoneProvider::TimeZoneProvider
(this=0x7ffff6e99750 <tzp>) at gnc-timezone.hpp:51
#13 __static_initialization_and_destruction_0 (__initialize_p=1,
__priority=65535) at gnc-datetime.cpp:48
#14 _GLOBAL__sub_I_gnc_datetime.cpp(void) () at gnc-datetime.cpp:339
#15 0x00007ffff7dea36a in call_init (l=<optimized out>, argc=argc at entry=2,
argv=argv at entry=0x7fffffffe858, env=env at entry=0x7fffffffe870)
    at dl-init.c:72
#16 0x00007ffff7dea47b in call_init (env=0x7fffffffe870,
argv=0x7fffffffe858, argc=2, l=<optimized out>) at dl-init.c:30
#17 _dl_init (main_map=0x7ffff7ffe148, argc=2, argv=0x7fffffffe858,
env=0x7fffffffe870) at dl-init.c:120
#18 0x00007ffff7ddbc7a in _dl_start_user () from /lib64/ld-linux-x86-64.so.2
#19 0x0000000000000002 in ?? ()


If I set it, the program starts but there is some text echoed to the
terminal.

Robert.


More information about the gnucash-devel mailing list