On Fri, Mar 25, 2022 at 06:42:26AM +0100, Rafael Sadowski wrote:
> On Thu Mar 24, 2022 at 03:27:04PM +0000, Klemens Nanni wrote:
> > On Tue, Mar 15, 2022 at 09:23:51PM +0000, Klemens Nanni wrote:
> > > On Tue, Mar 15, 2022 at 08:20:35PM +0000, Stuart Henderson wrote:
> > > > On 2022/03/15 21:03, Theo Buehler wrote:
> > > > > On Tue, Mar 15, 2022 at 07:47:03PM +0000, Klemens Nanni wrote:
> > > > > > On Tue, Mar 15, 2022 at 06:27:13PM +0000, Klemens Nanni wrote:
> > > > > > > Just tried it on a kern.wxabort=1 machine which causes
> > > > > > > 
> > > > > > > At least two programs in this port need W^X:
> > > > > > > kdeconnect-app(83050): mmap W^X violation
> > > > > > > kdeconnect-sms(27246): mmap W^X violation
> > > > > > > 
> > > > > > > OK?
> > > > > > 
> > > > > > > RCS file: /cvs/ports/net/neochat/Makefile,v
> > > > > > 
> > > > > > Used an old mail as template and forgot to send the right patch...
> > > > > 
> > > > > Before USE_WXNEEDED is sprinkled all over kde/Qt ports, what is the 
> > > > > root
> > > > > cause of this? Can it perhaps be neutered?
> > > > 
> > > > By sprinkling USE_WXNEEDED you allow software to carry out these
> > > > mappings _even if they don't need them_.
> > > > 
> > > > The default kern.wxabort=0 setting returns a failure to the software
> > > > rather than killing it. This is like what PaX does. It's not uncommon
> > > > for software to handle this case correctly: try a mapping, if it fails
> > > > then use a non-W+X fallback.
> > > 
> > > Thanks for the feedback (both on- and off-list).
> > > 
> > > Turns out both neochat and kdeconnect-kde abort in the same Qt5Qml lib
> > > which in fact has fallback code for W^X mappings, i.e. it'll gracefully
> > > try non-W^X mappings.
> > > 
> > > That W^X check is what's triggering wxabort=1 in the first place, so
> > > by neutering the check on OpenBSD we can avoid triggering it and thus
> > > USE_WXNEEDED=Yes.
> > > 
> > > Feedback? Obejctions? OK?
> > 
> > Anyone? 
> 
> It looks good and makes sense but I think it's better to test with more
> qtdeclarative consumers and for this reason I would wait until after
> 7.1.

It makes sense to wait with this until after release. However, I think
in that case we should revert the various USE_WXNEEDED patches that
already landed.

> Is that okay with you? If yes, ok rsadowski@

I do not know how QT_CONFIG works, but I suspect that this patch has
the same effect as disabling QT_CONFIG(qml_jit) so maybe something in
the makefile might be enough to achieve the same effect.

> 
> > 
> > Index: net/neochat/Makefile
> > ===================================================================
> > RCS file: /cvs/ports/net/neochat/Makefile,v
> > retrieving revision 1.7
> > diff -u -p -r1.7 Makefile
> > --- net/neochat/Makefile    11 Mar 2022 19:46:28 -0000      1.7
> > +++ net/neochat/Makefile    15 Mar 2022 20:58:07 -0000
> > @@ -1,9 +1,7 @@
> > -USE_WXNEEDED =     Yes
> > -
> >  COMMENT =  client for Matrix chat
> >  VERSION =  1.2.0
> >  DISTNAME = neochat-${VERSION}
> > -REVISION = 0
> > +REVISION = 1
> >  
> >  CATEGORIES=        net
> >  
> > Index: x11/qt5/qtdeclarative/Makefile
> > ===================================================================
> > RCS file: /cvs/ports/x11/qt5/qtdeclarative/Makefile,v
> > retrieving revision 1.18
> > diff -u -p -r1.18 Makefile
> > --- x11/qt5/qtdeclarative/Makefile  11 Mar 2022 20:16:59 -0000      1.18
> > +++ x11/qt5/qtdeclarative/Makefile  15 Mar 2022 20:38:50 -0000
> > @@ -4,6 +4,8 @@ USE_WXNEEDED =              Yes
> >  QT5NAME =          QtDeclarative
> >  COMMENT-main =             Qt5 Quick and QML components
> >  
> > +REVISION-main =            0
> > +
> >  MULTI_PACKAGES =   -main -examples
> >  DPB_PROPERTIES =   parallel
> >  
> > Index: 
> > x11/qt5/qtdeclarative/patches/patch-src_3rdparty_masm_wtf_OSAllocatorPosix_cpp
> > ===================================================================
> > RCS file: 
> > x11/qt5/qtdeclarative/patches/patch-src_3rdparty_masm_wtf_OSAllocatorPosix_cpp
> > diff -N 
> > x11/qt5/qtdeclarative/patches/patch-src_3rdparty_masm_wtf_OSAllocatorPosix_cpp
> > --- /dev/null       1 Jan 1970 00:00:00 -0000
> > +++ 
> > x11/qt5/qtdeclarative/patches/patch-src_3rdparty_masm_wtf_OSAllocatorPosix_cpp
> >   15 Mar 2022 21:20:10 -0000
> > @@ -0,0 +1,16 @@
> > +canAllocateExecutableMemory() maps memory W^X to see if that is allowed,
> > +which triggers our kern.wxabort sysctl(2);  always return false to neuter
> > +that mmap(2) test call and have (at least libQt5Qml) always fall back to
> > +non-W^X mappings.
> > +
> > +Index: src/3rdparty/masm/wtf/OSAllocatorPosix.cpp
> > +--- src/3rdparty/masm/wtf/OSAllocatorPosix.cpp.orig
> > ++++ src/3rdparty/masm/wtf/OSAllocatorPosix.cpp
> > +@@ -262,6 +262,7 @@ void OSAllocator::releaseDecommitted(void* address, si
> > + 
> > + bool OSAllocator::canAllocateExecutableMemory()
> > + {
> > ++    return false;
> > +     int flags = MAP_PRIVATE | MAP_ANON;
> > + #if PLATFORM(IOS)
> > +     if (executable)
> > Index: net/kdeconnect-kde/Makefile
> > ===================================================================
> > RCS file: /cvs/ports/net/kdeconnect-kde/Makefile,v
> > retrieving revision 1.9
> > diff -u -p -r1.9 Makefile
> > --- net/kdeconnect-kde/Makefile     15 Mar 2022 20:01:46 -0000      1.9
> > +++ net/kdeconnect-kde/Makefile     15 Mar 2022 21:21:41 -0000
> > @@ -1,9 +1,7 @@
> > -USE_WXNEEDED =     Yes
> > -
> >  COMMENT =  KDE app that allows your devices to communicate
> >  
> >  DISTNAME = kdeconnect-kde-${MODKDE_VERSION}
> > -REVISION = 0
> > +REVISION = 1
> >  
> >  SHARED_LIBS +=     kdeconnectcore          2.0 # 1.4
> >  SHARED_LIBS +=     kdeconnectinterfaces    2.0 # 1.4

Reply via email to