Opened 17 months ago
Closed 17 months ago
#67658 closed defect (fixed)
svndigest @0.11: Segmentation fault
Reported by: | ryandesign (Ryan Carsten Schmidt) | Owned by: | peter31042 |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.8.1 |
Keywords: | lion haspatch | Cc: | |
Port: | svndigest |
Description (last modified by ryandesign (Ryan Carsten Schmidt))
svndigest @0.11 fails to build on Mac OS X 10.7.x only, because it tries to run each of the three executables during the build, and they crash:
sh: line 1: 93257 Segmentation fault: 11 bin/svncopyright --help 2> /dev/null help2man: can't get `--help' info from bin/svncopyright Try `--no-discard-stderr' if option outputs to stderr make[1]: *** [man/svncopyright.1] Error 139 make[1]: *** Waiting for unfinished jobs.... sh: line 1: 93256 Segmentation fault: 11 bin/svndigest-copy-cache --help 2> /dev/null help2man: can't get `--help' info from bin/svndigest-copy-cache Try `--no-discard-stderr' if option outputs to stderr make[1]: *** [man/svndigest-copy-cache.1] Error 139 sh: line 1: 93255 Segmentation fault: 11 bin/svndigest --help 2> /dev/null help2man: can't get `--help' info from bin/svndigest Try `--no-discard-stderr' if option outputs to stderr make[1]: *** [man/svndigest.1] Error 139
The crash logs show:
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 libc++.1.dylib 0x0000000101433201 std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::sentry(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) + 19 1 svndigest 0x00000001011312f6 std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) + 38 2 svndigest 0x000000010113f1dc theplu::yat::utility::ColumnStream::print(std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) + 150 3 svndigest 0x0000000101140f74 theplu::yat::utility::ColumnStream& theplu::yat::utility::operator<< <std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(theplu::yat::utility::ColumnStream&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) + 88 4 svndigest 0x0000000101140e63 theplu::yat::utility::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, theplu::yat::utility::CommandLine const&) + 546 5 svndigest 0x0000000101143678 theplu::yat::utility::OptionHelp::do_parse2(std::__1::__wrap_iter<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*>, std::__1::__wrap_iter<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*>) + 264 6 svndigest 0x00000001011438d2 theplu::yat::utility::OptionSwitch::do_parse(std::__1::__wrap_iter<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*>&, std::__1::__wrap_iter<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*> const&) + 182 7 svndigest 0x0000000101140459 theplu::yat::utility::CommandLine::parse_long(std::__1::__wrap_iter<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*>&, std::__1::__wrap_iter<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*>&) + 435 8 svndigest 0x0000000101140216 theplu::yat::utility::CommandLine::parse(std::__1::__wrap_iter<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*>&, std::__1::__wrap_iter<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*>&) + 134 9 svndigest 0x000000010113fdbe theplu::yat::utility::CommandLine::parse(int, char**) + 684 10 svndigest 0x00000001010f6233 theplu::svndigest::AbstractParameter::parse(int, char**) + 39 11 svndigest 0x00000001010f8371 main + 49 12 svndigest 0x00000001010f5344 start + 52
Mac OS X 10.7 was the first version to include libc++. It's possible it has a bug that was fixed in later versions. The build succeeds on OS X 10.8 and later, and also on Mac OS X 10.6 on which we install our own newer libc++.
If this is a libc++ bug and not a bug in svndigest or yat, one solution that might work is to use the legacysupport portgroup and tell it to use a newer MacPorts libc++:
PortGroup legacysupport 1.1
legacysupport.newest_darwin_requires_legacy 11
legacysupport.use_mp_libcxx yes
If svndigest is passing around C++ objects between itself and its dependencies, this isn't a good idea, but if svndigest is only using C++ objects it created itself and doesn't share them with other libraries, this might be fine.
Attachments (3)
Change History (9)
comment:1 Changed 17 months ago by ryandesign (Ryan Carsten Schmidt)
Owner: | set to peter31042 |
---|---|
Status: | new → assigned |
comment:2 Changed 17 months ago by ryandesign (Ryan Carsten Schmidt)
Description: | modified (diff) |
---|
Changed 17 months ago by ryandesign (Ryan Carsten Schmidt)
Attachment: | svncopyright_2023-06-20-073151_localhost.crash added |
---|
Changed 17 months ago by ryandesign (Ryan Carsten Schmidt)
Attachment: | svndigest_2023-06-20-073152_localhost.crash added |
---|
Changed 17 months ago by ryandesign (Ryan Carsten Schmidt)
Attachment: | svndigest-copy-cache_2023-06-20-073151_localhost.crash added |
---|
comment:3 Changed 17 months ago by peter31042
comment:4 Changed 17 months ago by ryandesign (Ryan Carsten Schmidt)
Using different compilers shouldn't matter as long as they use the same C++ standard library, and all clangs normally use the system's libc++. Trying to use two different C++ standard libraries in the same program is where things can start to fall apart, and I don't know if svndigest using a newer MacPorts libc++ will work when plplot is using the system's older libc++. At some point I will reboot to Lion and try it out.
comment:5 Changed 17 months ago by ryandesign (Ryan Carsten Schmidt)
Keywords: | haspatch added |
---|
comment:6 Changed 17 months ago by ryandesign (Ryan Carsten Schmidt)
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
All dependencies are written in C except for plplot. svndigest creates a plstream object declared by plplot and calls its member functions, but does not pass it or any other object to other functionality in plplot. I'm not sure if that makes it safe to use different compilers for svndigest and plplot, if that's your question.