I tested a full-symbol version and found that tar segfaulted due to 'argp'. Tar is using its own internal implementation of argp, instead of linking to the one most musl-based distros are using - argp-standalone. In other words, that internal implementation is not compatible with musl and there's no actual bug in tar.

I am satisfied with add -largp, but one more question: what's the reason for not adding argp to musl? I can understand execinfo is hard to add (from mail)and fts is waiting for changes of API(in wiki). They're not portable for adding, so what's wrong with argp then? I did not find any mail related to this question. And I am sorry if i missed anything.

He X

2017-03-25 2:36 GMT+08:00 Rich Felker <dalias@libc.org>:
On Thu, Mar 23, 2017 at 01:05:55PM +0800, He X wrote:
> Hi, rich, happy that you merged the changes related to dcngettext(). But
> you seems forget this simple patch and did not get it with those changes.
> So i bump it again now. Hope you do not mind if you still remember it.
>
> He X
>
> 2017-03-04 16:08 GMT+08:00 He X <xw897002528@gmail.com>:
>
> > following http://www.openwall.com/lists/musl/2017/02/13/8 ,
> > http://www.openwall.com/lists/musl/2017/03/04/1 and
> > http://www.openwall.com/lists/musl/2017/02/13/5:
> >
> > > gnu tar showed me segfaults, because he passed a zero msgid1 causing
> > __mo_lookup segfault, we should add a check in dcngettext to avoid it(if
> > (!msgid1) goto notrans;):
> >
> >  #2  0x00007ffff7d82a6f in dcngettext (domainname=0x6737a0 "tar",
> > msgid1=0x0, msgid2=0x0, n=1,
> >     category=5) at src/locale/dcngettext.c:211

Indeed, I did forget. But looking at it more closely, according to the
GNU gettext manual I think this is a bug in GNU tar:

    "If the argument is NULL the result is undefined."

https://www.gnu.org/software/gettext/manual/html_node/Interface-to-gettext.html

Whether we commit this patch or not, I think it should be reported as
a bug in GNU tar.

Given that the API documentation says a NULL pointer is not valid
here, my leaning, in alignment with existing musl practice, is _not_
to make it silently "work" but to leave it crashing, so that this sort
of bug is caught. But if the documentation is wrong and the practice
of passing null pointers here is widely accepted we can reconsider.

Rich