Opened 16 months ago
Last modified 16 months ago
#67658 closed defect
svndigest @0.11: Segmentation fault — at Initial Version
Reported by: | ryandesign (Ryan Carsten Schmidt) | Owned by: | |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.8.1 |
Keywords: | lion haspatch | Cc: | |
Port: | svndigest |
Description
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:
https://patch-diff.githubusercontent.com/raw/KhronosGroup/glslang/pull/3243.diff
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.