[jira] [Updated] (PARQUET-1265) Segfault on static ApplicationVersion initialization

2018-04-04 Thread Lawrence Chan (JIRA)

 [ 
https://issues.apache.org/jira/browse/PARQUET-1265?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lawrence Chan updated PARQUET-1265:
---
Description: 
I'm seeing a segfault when I link/run with a shared libparquet.so with 
statically linked boost. Given the backtrace, it seems that this is due to the 
static ApplicationVersion constants, likely due to some static initialization 
order issue. The problem goes away if I turn those static vars into static 
funcs returning function-local statics.

Backtrace:
{code}
#0  0x7753cf8b in std::basic_string, 
std::allocator >::basic_string(std::string const&) () from 
/lib64/libstdc++.so.6
#1  0x77aeae9c in 
boost::re_detail_106600::cpp_regex_traits_char_layer::init() () from 
debug/libparquet.so.1
#2  0x77adcc2b in 
boost::object_cache, 
boost::re_detail_106600::cpp_regex_traits_implementation 
>::do_get(boost::re_detail_106600::cpp_regex_traits_base const&, unsigned 
long) () from debug/libparquet.so.1
#3  0x77ae9023 in boost::basic_regex > >::do_assign(char const*, char const*, unsigned 
int) () from debug/libparquet.so.1
#4  0x77a5ed98 in boost::basic_regex > >::assign (this=0x7fff5580, 
p1=0x77af66d8 
"(.*?)\\s*(?:(version\\s*(?:([^(]*?)\\s*(?:\\(\\s*build\\s*([^)]*?)\\s*\\))?)?)?)",
 p2=0x77af6720 "", f=0) at 
/tmp/boost-1.66.0/include/boost/regex/v4/basic_regex.hpp:381
#5  0x77a5b653 in boost::basic_regex > >::assign (this=0x7fff5580, 
p=0x77af66d8 
"(.*?)\\s*(?:(version\\s*(?:([^(]*?)\\s*(?:\\(\\s*build\\s*([^)]*?)\\s*\\))?)?)?)",
 f=0) at /tmp/boost-1.66.0/include/boost/regex/v4/basic_regex.hpp:366
#6  0x77a57049 in boost::basic_regex > >::basic_regex (this=0x7fff5580, 
p=0x77af66d8 
"(.*?)\\s*(?:(version\\s*(?:([^(]*?)\\s*(?:\\(\\s*build\\s*([^)]*?)\\s*\\))?)?)?)",
 f=0) at /tmp/boost-1.66.0/include/boost/regex/v4/basic_regex.hpp:335
#7  0x77a4fa1f in parquet::ApplicationVersion::ApplicationVersion 
(this=0x77ddbfc0 , 
created_by="parquet-mr version 1.8.0") at 
/tmp/parquet-cpp-apache-parquet-cpp-1.4.0/src/parquet/metadata.cc:477
#8  0x77a516c5 in __static_initialization_and_destruction_0 
(__initialize_p=1, __priority=65535) at 
/tmp/parquet-cpp-apache-parquet-cpp-1.4.0/src/parquet/metadata.cc:58
#9  0x77a5179e in _GLOBAL__sub_I_metadata.cc(void) () at 
/tmp/parquet-cpp-apache-parquet-cpp-1.4.0/src/parquet/metadata.cc:913
#10 0x77dec1e3 in _dl_init_internal () from /lib64/ld-linux-x86-64.so.2
#11 0x77dde21a in _dl_start_user () from /lib64/ld-linux-x86-64.so.2
#12 0x0001 in ?? ()
#13 0x7fff5ff5 in ?? ()
#14 0x in ?? ()
{code}

Versions:
- gcc-4.8.5
- boost-1.66.0
- parquet-cpp-1.4.0

  was:
I'm seeing a segfault when I link/run with a shared libparquet.so with 
statically linked boost. Given the backtrace, it seems that this is due to the 
static ApplicationVersion constants for the fixes, probably some static 
initialization order issue. The problem goes away if I turn those static vars 
into static funcs returning function-local statics.

Backtrace:
{code}
#0  0x7753cf8b in std::basic_string, 
std::allocator >::basic_string(std::string const&) () from 
/lib64/libstdc++.so.6
#1  0x77aeae9c in 
boost::re_detail_106600::cpp_regex_traits_char_layer::init() () from 
debug/libparquet.so.1
#2  0x77adcc2b in 
boost::object_cache, 
boost::re_detail_106600::cpp_regex_traits_implementation 
>::do_get(boost::re_detail_106600::cpp_regex_traits_base const&, unsigned 
long) () from debug/libparquet.so.1
#3  0x77ae9023 in boost::basic_regex > >::do_assign(char const*, char const*, unsigned 
int) () from debug/libparquet.so.1
#4  0x77a5ed98 in boost::basic_regex > >::assign (this=0x7fff5580, 
p1=0x77af66d8 
"(.*?)\\s*(?:(version\\s*(?:([^(]*?)\\s*(?:\\(\\s*build\\s*([^)]*?)\\s*\\))?)?)?)",
 p2=0x77af6720 "", f=0) at 
/tmp/boost-1.66.0/include/boost/regex/v4/basic_regex.hpp:381
#5  0x77a5b653 in boost::basic_regex > >::assign (this=0x7fff5580, 
p=0x77af66d8 
"(.*?)\\s*(?:(version\\s*(?:([^(]*?)\\s*(?:\\(\\s*build\\s*([^)]*?)\\s*\\))?)?)?)",
 f=0) at /tmp/boost-1.66.0/include/boost/regex/v4/basic_regex.hpp:366
#6  0x77a57049 in boost::basic_regex > >::basic_regex (this=0x7fff5580, 
p=0x77af66d8 
"(.*?)\\s*(?:(version\\s*(?:([^(]*?)\\s*(?:\\(\\s*build\\s*([^)]*?)\\s*\\))?)?)?)",
 f=0) at /tmp/boost-1.66.0/include/boost/regex/v4/basic_regex.hpp:335
#7  0x77a4fa1f in parquet::ApplicationVersion::ApplicationVersion 
(this=0x77ddbfc0 , 
created_by="parquet-mr version 1.8.0") at 
/tmp/parquet-cpp-apache-parquet-cpp-1.4.0/src/parquet/metadata.cc:477
#8  0x77a516c5 in __static_initialization_and_destruction_0 
(__initialize_p=1, __priority=65535) at 
/tmp/parquet-cpp-apache-parquet-cpp-1.4.0/src/parquet/metadata.cc:58
#9  0x77a5179e in _GLOBA

[jira] [Updated] (PARQUET-1265) Segfault on static ApplicationVersion initialization

2018-04-04 Thread Lawrence Chan (JIRA)

 [ 
https://issues.apache.org/jira/browse/PARQUET-1265?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lawrence Chan updated PARQUET-1265:
---
Description: 
I'm seeing a segfault when I link/run with a shared libparquet.so with 
statically linked boost. Given the backtrace, it seems that this is due to the 
static ApplicationVersion constants for the fixes, probably some static 
initialization order issue. The problem goes away if I turn those static vars 
into static funcs returning function-local statics.

Backtrace:
{code}
#0  0x7753cf8b in std::basic_string, 
std::allocator >::basic_string(std::string const&) () from 
/lib64/libstdc++.so.6
#1  0x77aeae9c in 
boost::re_detail_106600::cpp_regex_traits_char_layer::init() () from 
debug/libparquet.so.1
#2  0x77adcc2b in 
boost::object_cache, 
boost::re_detail_106600::cpp_regex_traits_implementation 
>::do_get(boost::re_detail_106600::cpp_regex_traits_base const&, unsigned 
long) () from debug/libparquet.so.1
#3  0x77ae9023 in boost::basic_regex > >::do_assign(char const*, char const*, unsigned 
int) () from debug/libparquet.so.1
#4  0x77a5ed98 in boost::basic_regex > >::assign (this=0x7fff5580, 
p1=0x77af66d8 
"(.*?)\\s*(?:(version\\s*(?:([^(]*?)\\s*(?:\\(\\s*build\\s*([^)]*?)\\s*\\))?)?)?)",
 p2=0x77af6720 "", f=0) at 
/tmp/boost-1.66.0/include/boost/regex/v4/basic_regex.hpp:381
#5  0x77a5b653 in boost::basic_regex > >::assign (this=0x7fff5580, 
p=0x77af66d8 
"(.*?)\\s*(?:(version\\s*(?:([^(]*?)\\s*(?:\\(\\s*build\\s*([^)]*?)\\s*\\))?)?)?)",
 f=0) at /tmp/boost-1.66.0/include/boost/regex/v4/basic_regex.hpp:366
#6  0x77a57049 in boost::basic_regex > >::basic_regex (this=0x7fff5580, 
p=0x77af66d8 
"(.*?)\\s*(?:(version\\s*(?:([^(]*?)\\s*(?:\\(\\s*build\\s*([^)]*?)\\s*\\))?)?)?)",
 f=0) at /tmp/boost-1.66.0/include/boost/regex/v4/basic_regex.hpp:335
#7  0x77a4fa1f in parquet::ApplicationVersion::ApplicationVersion 
(this=0x77ddbfc0 , 
created_by="parquet-mr version 1.8.0") at 
/tmp/parquet-cpp-apache-parquet-cpp-1.4.0/src/parquet/metadata.cc:477
#8  0x77a516c5 in __static_initialization_and_destruction_0 
(__initialize_p=1, __priority=65535) at 
/tmp/parquet-cpp-apache-parquet-cpp-1.4.0/src/parquet/metadata.cc:58
#9  0x77a5179e in _GLOBAL__sub_I_metadata.cc(void) () at 
/tmp/parquet-cpp-apache-parquet-cpp-1.4.0/src/parquet/metadata.cc:913
#10 0x77dec1e3 in _dl_init_internal () from /lib64/ld-linux-x86-64.so.2
#11 0x77dde21a in _dl_start_user () from /lib64/ld-linux-x86-64.so.2
#12 0x0001 in ?? ()
#13 0x7fff5ff5 in ?? ()
#14 0x in ?? ()
{code}

Versions:
- gcc-4.8.5
- boost-1.66.0
- parquet-cpp-1.4.0

  was:
I'm seeing a segfault when I link/run with a shared libparquet.so with 
statically linked boost. Given the backtrace, it seems that this is due to the 
static ApplicationVersion constants for the fixes, probably some static 
initialization order issue. The problem goes away if I turn those static vars 
into static funcs returning function-local statics.

Backtrace:
{code}
#0  0x7753cf8b in std::basic_string, 
std::allocator >::basic_string(std::string const&) () from 
/lib64/libstdc++.so.6
#1  0x77aeae9c in 
boost::re_detail_106600::cpp_regex_traits_char_layer::init() () from 
debug/libparquet.so.1
#2  0x77adcc2b in 
boost::object_cache, 
boost::re_detail_106600::cpp_regex_traits_implementation 
>::do_get(boost::re_detail_106600::cpp_regex_traits_base const&, unsigned 
long) () from debug/libparquet.so.1
#3  0x77ae9023 in boost::basic_regex > >::do_assign(char const*, char const*, unsigned 
int) () from debug/libparquet.so.1
#4  0x77a5ed98 in boost::basic_regex > >::assign (this=0x7fff5580, 
p1=0x77af66d8 
"(.*?)\\s*(?:(version\\s*(?:([^(]*?)\\s*(?:\\(\\s*build\\s*([^)]*?)\\s*\\))?)?)?)",
 p2=0x77af6720 "", f=0) at 
/home/modules/rhel7/boost-1.66.0-em/include/boost/regex/v4/basic_regex.hpp:381
#5  0x77a5b653 in boost::basic_regex > >::assign (this=0x7fff5580, 
p=0x77af66d8 
"(.*?)\\s*(?:(version\\s*(?:([^(]*?)\\s*(?:\\(\\s*build\\s*([^)]*?)\\s*\\))?)?)?)",
 f=0) at 
/home/modules/rhel7/boost-1.66.0-em/include/boost/regex/v4/basic_regex.hpp:366
#6  0x77a57049 in boost::basic_regex > >::basic_regex (this=0x7fff5580, 
p=0x77af66d8 
"(.*?)\\s*(?:(version\\s*(?:([^(]*?)\\s*(?:\\(\\s*build\\s*([^)]*?)\\s*\\))?)?)?)",
 f=0) at 
/home/modules/rhel7/boost-1.66.0-em/include/boost/regex/v4/basic_regex.hpp:335
#7  0x77a4fa1f in parquet::ApplicationVersion::ApplicationVersion 
(this=0x77ddbfc0 , 
created_by="parquet-mr version 1.8.0") at 
/tmp/parquet-cpp-apache-parquet-cpp-1.4.0/src/parquet/metadata.cc:477
#8  0x77a516c5 in __static_initialization_and_destruction_0 
(__initialize_p=1, __priority=65535) at 
/tmp/parquet-cpp-apache-parquet-cpp-