segfault on 32bit cygwin snapshot

Takashi Yano takashi.yano@nifty.ne.jp
Wed Mar 3 09:56:21 GMT 2021


Hi Corinna,

On Tue, 2 Mar 2021 16:48:45 +0100
Corinna Vinschen wrote:
> On Mar  2 20:03, Takashi Yano via Cygwin wrote:
> > On Mon, 1 Mar 2021 21:25:42 +0900
> > Takashi Yano wrote:
> > > On Mon, 1 Mar 2021 09:55:46 +0900
> > > Takashi Yano wrote:
> > > > On Sun, 28 Feb 2021 19:48:28 +0100
> > > > Marco Atzeri wrote:
> > > > > On 20.02.2021 23:29, Takashi Yano wrote:
> > > > > > On Sat, 20 Feb 2021 22:01:38 +0100
> > > > > > Marco Atzeri wrote:
> > > > > >> MC using latest snapshot 32bit 2021-02-19 (and 2021-02-10)
> > > > > >>
> > > > > >> now fails at startup with
> > > > > >>
> > > > > >> Exception: STATUS_ACCESS_VIOLATION at eip=61083736
> > > > > > 
> > > > > > Thanks for the report. I found the cause of this issue.
> > > > > > I will submit a patch to fix it.
> > > > > > 
> > > > > 
> > > > > mc is now fine with 2021-02-22
> > > > > 
> > > > > but I found another issue
> > > > > 
> > > > >   $ /usr/bin/lilypond
> > > > > GNU LilyPond 2.20.0
> > > > > Segmentation fault (core dumped)
> > > > > 
> > > > > on 3.1.7 it works fine
> > > > 
> > > > I found this problem causes after the commit:
> > > > 
> > > > commit 532b91d24e9496c7988b2b1dda7fc0e8b161f782
> > > > Author: Corinna Vinschen <corinna@vinschen.de>
> > > > Date:   Mon Dec 14 12:29:23 2020 +0100
> > > > 
> > > >     Cygwin: Make sure newer apps get uname_x even when loading uname dynamically
> > > > 
> > > >     if an application built after API version 334 loads uname dynamically,
> > > >     it actually gets the old uname, rather than the new uname_x.  Fix this by
> > > >     checking the apps API version in uname and call uname_x instead, if it's
> > > >     a newer app.
> > > > 
> > > >     Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
> > > > 
> > > > Reverting this commit solves the issue.
> > > > 
> > > > Corinna, could you please have a look?
> > > 
> > > The following check code does not work as expected if
> > > newly build exe file is linked with old dll which calls
> > > uname() as in this case.
> > > 
> > >   if (CYGWIN_VERSION_CHECK_FOR_UNAME_X)
> > >     return uname_x (in_name);
> > > 
> > > Any idea?
> > 
> > Ping Corinna?
> 
> I have no idea how we could fix that, other than by rebuilding the DLLs
> which call uname, too.  We can't check the Cygwin build of all DLLs an
> executable is linked to.

I have checked all /usr/bin/*.dll in my cygwin installation and found
following dlls call uname() rather than uname_x().

/usr/bin/cyggcj-16.dll
/usr/bin/cyggstreamer-1.0-0.dll
/usr/bin/cygguile-17.dll
/usr/bin/cygguile-2.0-22.dll
/usr/bin/cyghwloc-15.dll
/usr/bin/cygLLVM-3.8.dll
/usr/bin/cygLLVM-3.9.dll
/usr/bin/cygLLVM-4.0.dll
/usr/bin/cygLLVM-5.0.dll
/usr/bin/cygLLVMSupport-3.7.dll
/usr/bin/cygoctinterp-7.dll
/usr/bin/cygpulsecommon-11.1.dll
/usr/bin/cygQt5Core-5.dll
/usr/bin/cygQt5WebKit-5.dll
/usr/bin/cygQtWebKit-4.dll
/usr/bin/cygslang-2.dll
/usr/bin/cygwebkitgtk-3.0-0.dll
/usr/bin/cygwx_baseu-2.8-0.dll
/usr/bin/libzsh-5.8.dll

I also confirm that the same problem occurs under cygwin snapshot
2021-02-22 if the following code is compiled with Qt5 because
this program is linked to /usr/bin/cygQt5Core-5.dll.

#include <QApplication>
#include <QLabel>
#include <QSysInfo>

int main(int argc, char **argv)
{
    QApplication app(argc, argv);
    QLabel *label = new QLabel(QSysInfo::kernelType());
    label->show();
    return app.exec();
}

Do you think rebuilding all of these (or maybe more) dlls is only
the solution? 

-- 
Takashi Yano <takashi.yano@nifty.ne.jp>


More information about the Cygwin mailing list