[MacPorts] #67658: svndigest @0.11: Segmentation fault

MacPorts noreply at macports.org
Tue Jun 20 08:38:43 UTC 2023


#67658: svndigest @0.11: Segmentation fault
-------------------------+------------------------
  Reporter:  ryandesign  |      Owner:  peter31042
      Type:  defect      |     Status:  assigned
  Priority:  Normal      |  Milestone:
 Component:  ports       |    Version:  2.8.1
Resolution:              |   Keywords:  lion
      Port:  svndigest   |
-------------------------+------------------------
Description changed by ryandesign:

Old 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.

New 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://build.macports.org/builders/ports-10.7_x86_64-builder/builds/148394/steps
 /install-port/logs/stdio

 {{{
 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.

--

-- 
Ticket URL: <https://trac.macports.org/ticket/67658#comment:2>
MacPorts <https://www.macports.org/>
Ports system for macOS


More information about the macports-tickets mailing list