mailing list of musl libc
 help / color / mirror / code / Atom feed
From: Rich Felker <dalias@libc.org>
To: Static Php <phpstatic.com@gmail.com>
Cc: musl@lists.openwall.com
Subject: Re: [musl] runtime error: initgroups(www-data, 33) failed (5: I/O error)
Date: Sun, 25 Oct 2020 12:15:05 -0400	[thread overview]
Message-ID: <20201025161504.GH534@brightrain.aerifal.cx> (raw)
In-Reply-To: <CAHW9ji5QMydUtQ+Ek5JQyz=gBdk-gAEheZ2v2+3c8_pCK_s_ww@mail.gmail.com>

On Sun, Oct 25, 2020 at 02:03:07PM +0800, Static Php wrote:
> I am not sure which step I made wrong, but I still get this error.
> 
> 1. make clean
> 2. make musl-1.2.1
> 3. patch -p1 < ../patches/musl-1.2.0/0002-group.diff
> 4. make all -j8
> 5. sudo make install
> 
> then I relink my php, test at  old server and get the same result.

It's not clear which directories you're running those commands in. It
should just be sufficient to put the patch in patches/musl-1.2.1 (note
you have 1.2.0 and 1.2.1 mismatched above) and re-run mcm from scratch
(or just rm -rf the obj_musl directory under build/local/$(TARGET) and
re-run an incremental make; no need to build gcc again.

Rich


> On Sat, Oct 10, 2020 at 4:39 AM Rich Felker <dalias@libc.org> wrote:
> 
> > On Fri, Oct 02, 2020 at 10:37:03PM -0400, Rich Felker wrote:
> > > On Sat, Oct 03, 2020 at 09:06:50AM +0800, Static Php wrote:
> > > > I has this runtime error on Ubuntu 18.04.5 LTS, CPU is AMD EPYC
> > Processor.
> > > >
> > > > Kernel: 5.4.0-49-generic #53~18.04.1-Ubuntu (other kernel also has this
> > > > problem)
> > > >
> > > > more details: https://github.com/richfelker/musl-cross-make/issues/107
> > > >
> > > > strace:
> > > >
> > > > execve("./a.out", ["./a.out"], 0x7fff12cd26d0 /* 20 vars */) = 0
> > > > >
> > > > > arch_prctl(ARCH_SET_FS, 0x7ff53bb3b618) = 0
> > > > >
> > > > > set_tid_address(0x7ff53bb3bbe8)         = 40778
> > > > >
> > > > > socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0) = 3
> > > > >
> > > > > brk(NULL)                               = 0x555556f23000
> > > > >
> > > > > brk(0x555556f25000)                     = 0x555556f25000
> > > > >
> > > > > mmap(0x555556f23000, 4096, PROT_NONE,
> > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS,
> > > > > -1, 0) = 0x555556f23000
> > > > >
> > > > > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
> > -1, 0) =
> > > > > 0x7ff53bb39000
> > > > >
> > > > > connect(3, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 24)
> > = 0
> > > > >
> > > > > sendmsg(3, {msg_name=NULL, msg_namelen=0,
> > > > > msg_iov=[{iov_base="\2\0\0\0\17\0\0\0\t\0\0\0", iov_len=12},
> > > > > {iov_base="www-data\0", iov_len=9}], msg_iovlen=2, msg_controllen=0,
> > > > > msg_flags=0}, MSG_NOSIGNAL) = 21
> > > > >
> > > > > readv(3, [{iov_base="\2\0\0\0\1\0\0\0\0\0\0", iov_len=11},
> > {iov_base="\0",
> > > > > iov_len=1024}], 2) = 12
> > > > >
> > > > > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
> > -1, 0) =
> > > > > 0x7ff53bb38000
> > > > >
> > > > > close(3)                                = 0
> > > > >
> > > > > munmap(0x7ff53bb39000, 4096)            = 0
> > > > >
> > > > > munmap(0x7ff53bb38000, 4096)            = 0
> > > > >
> > > > > ioctl(1, TIOCGWINSZ, {ws_row=59, ws_col=225, ws_xpixel=1575,
> > > > > ws_ypixel=826}) = 0
> > > > >
> > > > > writev(1, [{iov_base="err=-1, errno=5", iov_len=15}, {iov_base="\n",
> > > > > iov_len=1}], 2err=-1, errno=5
> > > > >
> > > > > ) = 16
> > > > >
> > > > > exit_group(0)                           = ?
> > > > >
> > > > > +++ exited with 0 +++
> > > > >
> > >
> > > Ah, this looks like a bug in musl causing a zero-groups response from
> > > nscd to be interpreted as an error rather than success with no
> > > members:
> > >
> > >       if (!fread(nscdbuf, sizeof(*nscdbuf)*resp[INITGRNGRPS], 1, f)) {
> > >               if (!ferror(f)) errno = EIO;
> > >               goto cleanup;
> > >       }
> > >
> > > The problem is that this code was written assuming the fread call
> > > returns 1 on success, but fread has a stupid corner case (which we
> > > used to get wrong) where a zero-length read is required by the
> > > standard to return 0 even though logically it should return nmemb.
> > >
> > > You can work around the problem by adding www-data to a useless dummy
> > > group. I'll prepare a patch for musl, though, and post it here as a
> > > follow-up soon.
> > >
> > > Thanks for the report!
> >
> > I think the attached patch should work, but it's not tested since I
> > dont have an environment with nscd handy.
> >
> > Rich
> >

      parent reply	other threads:[~2020-10-25 16:15 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-03  1:06 Static Php
2020-10-03  2:37 ` Rich Felker
2020-10-09 20:39   ` Rich Felker
2020-10-25  6:03     ` Static Php
2020-10-25  6:21       ` Static Php
2020-10-25 16:15       ` Rich Felker [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201025161504.GH534@brightrain.aerifal.cx \
    --to=dalias@libc.org \
    --cc=musl@lists.openwall.com \
    --cc=phpstatic.com@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).