mailarchive of the ptxdist mailing list
 help / color / mirror / Atom feed
From: Mircea Ciocan <m.ciocan@ppc-ag.de>
To: ptxdist@pengutronix.de
Subject: Re: [ptxdist] Segmentation fault with ptxdist-2020.05.0
Date: Fri, 15 May 2020 15:36:30 +0200	[thread overview]
Message-ID: <3d986a27-b850-fc9e-7a0f-2e0127abe3d0@ppc-ag.de> (raw)
In-Reply-To: <ecd9fc8d-7132-57fb-f051-0ff93ba8cb84@ppc-ag.de>


On 15.05.20 15:02, Mircea Ciocan wrote:
>
> On 15.05.20 09:46, Michael Olbrich wrote:
>> On Thu, May 14, 2020 at 03:36:44PM +0200, Mircea Ciocan wrote:
>>> Hello list,
>>>
>>> I have the most strange error with the ptxdist-2020.05.0 while 
>>> trying to
>>> compile a simple image for the iMX6ULL EVK, the shell segfaults !!!
>>>
>>> Here are some information, that you could find useful:
>>>
>>> Distribution: Ubuntu 18.04 LTS, 8GB RAM, current updates.
>>>
>>> System shell set to bash.
>>>
>>> The compilation of everything goes perfectly OK, but while building 
>>> the root
>>> filesystem image it crashes, always in the same place (100% 
>>> reproducible),
>>> when adding the net-dns-perl package, with the following message;
>>>
>>> info: selected ptxconfig:
>>>        'configs/platform-mcimx6ull-evk/ptxconfig.tiny'
>>> ptxdist: warning: No dev packages found in 
>>> 'Firmware/packages-MCIMX6ULL-EVK'
>>>
>>> ...[snip]...
>>>
>>> [compilation goes OK]
>>>
>>> ----------------
>>> target: root.tgz
>>> ----------------
>>> ...[snip]...
>>>
>>> Configuring readline.
>>> Configuring net-dns-perl.
>>> environment: line 1: 31523 Done                    { echo "cd 
>>> '${work_dir}'
>>> || exit"; ptxd_dopermissions "${ptxd_reply_perm_files[@]}"; echo ":"; }
>>>       31524 Segmentation fault      (core dumped) | sh
>>> ./Software/ptxdist-2020.05.0/rules/image-root-tgz.make:29: recipe 
>>> for target
>>> './Software/Firmware/platform-MCIMX6ULL-EVK/images/root.tgz' failed
>>>
>>> make: *** 
>>> [./Software/Firmware/platform-MCIMX6ULL-EVK/images/root.tgz] Error
>>> 139
>>>
>>>
>>> In the system log I get something like:
>>>
>>> "vmunix: [132753.581596] sh[10747]: segfault at 7ffe5bdf1fe8 ip
>>> 00007fdb0b04930e sp 00007ffe5bdf1fe0 error 6 in
>>> libc-2.27.so[7fdb0afb5000+1e7000]"
>>>
>>>
>>> I have to say that I rarely, if ever, see this type of crash, and 
>>> the build
>>> finishes OK with ptxdist-2020.02.0. Any pointer on how can I fix or 
>>> debug
>>> this are greatly appreciated.
>> Huh, I've never seen anything like this. Some things to test.
>>
>> Take a look at scripts/lib/ptxd_make_image_prepare_work_dir.sh in 
>> PTXdist.
>> The relevant code is there. Line 50ff.
>> If you change line 56 to something like this:
>>
>> } | tee /tmp/ptxdist-sh-test.txt | sh &&
>>
>> Then this will save the exact code that the shell executes when it 
>> crashed.
>> Maybe we can find some clues there. But It's probably a bug in 'sh'.
>>
>> What's your /bin/sh anyways? For me it's a link to 'dash' but sometimes
>> it's a bash. You could explicitly try the other here instead of 'sh' 
>> to see
>> if that crashes as well.
>>
>> Michael
>>
> Hello Michael and thanks for the hint, first things first, the shell 
> is the GNU bash, I've change it via the update-alternatives, because 
> more than one time I've had issues with scripts that call /bin/sh, but 
> assume that is bash.
>
> The logging tap collected the following file:
>
> "cd 
> './Software/Firmware/platform-MCIMX6ULL-EVK/build-target/image-root-tgz' 
> || exit
> chmod 0755    './' &&
> chown 0.0    './' &&
> chmod 0755    './usr' &&
> chown 0.0    './usr' &&
> chmod 0755    './usr/sbin' &&
> chown 0.0    './usr/sbin' &&
>
> ...
>
> !!! Another >>>71940<<< similar lines !!!
>
> ...
>
> chmod 0755    './usr/bin/cpuburn-a9' &&
> chown 0.0    './usr/bin/cpuburn-a9' &&
> :"
>
> Is this just a "cool way" to execute a quatrillion of commands, by 
> exploiting to the limit the AND_IF (&&) construct to exit on error, or 
> there is a deeper purpose ?
>
> I could see that some other cool programmer tried some optimization 
> somewhere in bash and these two worlds collided hard, now that full 
> Perl and Python packages adds a few tens of thousands of files to the 
> image that need their permissions fixed.
>
> I'll have a look if there was another way to do it (how was it done in 
> 2020.03.0 and lower, could it be that only two lines have been used 
> like: chmod -R * && chown -R 0.0 * und fertig ;) ?!?) and see if I 
> could reproduce it, to make an Ubuntu bug report.
>
> Other ideas and solutions are most welcome.
>
>
> Thanks for your help,
>
> Mircea 

OK, latest update, is definitly a (Ubuntu) bash bug, I've run the 
mega-list of commands with bash and dash, bash crashes immediately, dash 
takes a mounstrously large amount of time (almost 5min on a beefy 
machine with fast SSD), so it is clear why Michael did't see the bug.
A bit of stracing show something like a lot of threads dieing, so 
probably bash tries to execute this in parallel and hits something, just 
FYI here the last words of bash run strace:

read(255, "mod 0755\t'./usr' &&\nchown 0.0\t'."..., 8192) = 8192
brk(0x56519329b000)                     = 0x56519329b000
read(255, "tch_map' &&\nchmod 0755\t'./' &&\nc"..., 8192) = 2374
brk(0x5651932bc000)                     = 0x5651932bc000
brk(0x5651932dd000)                     = 0x5651932dd000
.... maaaany more similar lines, with different addresses ....
brk(0x565193805000)                     = 0x565193805000
brk(0x565193826000)                     = 0x565193826000
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, 
si_addr=0x7ffef981df98} ---
+++ killed by SIGSEGV (core dumped) +++
Segmentation fault (core dumped)

So because switching back to dash here it's a bit difficult, is there 
any way that this function could be made a bit more bash-friendly ?
I could gladly test your patches and ideas (vanilla Ubuntu 18.04, with 
bash as system shell, is not such a seldom encountered configuration), 
but I'm afraid that I'm not in the deep of the PTXdist internals to 
start hacking and don't produce conequences.

  Best regards,
  Mircea




_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de

  reply	other threads:[~2020-05-15 13:36 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-14 13:36 Mircea Ciocan
2020-05-15  7:40 ` Mircea Ciocan
2020-05-15  7:48   ` Michael Olbrich
2020-05-15  7:59   ` Alexander Dahl
2020-05-15  8:07     ` Mircea Ciocan
2020-05-15  7:46 ` Michael Olbrich
2020-05-15 13:02   ` Mircea Ciocan
2020-05-15 13:36     ` Mircea Ciocan [this message]
2020-05-29  9:21       ` Michael Olbrich
2020-05-29 11:03         ` [ptxdist] [PATCH] ptxd_lib_dopermissions: use 'set -e' instead of && Michael Olbrich

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=3d986a27-b850-fc9e-7a0f-2e0127abe3d0@ppc-ag.de \
    --to=m.ciocan@ppc-ag.de \
    --cc=ptxdist@pengutronix.de \
    /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.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox