[kde-freebsd] QFilesSystemWatcher instead of polling/FAM

Max Brazhnikov makc at issp.ac.ru
Fri Aug 6 20:21:16 CEST 2010


On Fri, 6 Aug 2010 14:39:29 +0200, Tijl Coosemans wrote:
> On Tuesday 03 August 2010 20:21:48 Max Brazhnikov wrote:
> > On Mon, 2 Aug 2010 22:10:52 +0200, Tijl Coosemans wrote:
> >> On Monday 19 July 2010 14:07:56 Rusty Nejdl wrote:
> >>> On Mon, 19 Jul 2010 12:20:35 +0200, Jaap Boender wrote:
> >>>>>>>> I've attached a patch that makes KDE use QFileSystemWatcher on
> >>>>>>>> FreeBSD which uses kqueue instead of stat. I've been using it for
> >>>>>>>> the past few days and it seems to work rather well.
> >>>> 
> >>>> I've been using the patch (the July 8 version), and it works well
> >>>> for the most part; the only problem is that plasma-desktop runs up
> >>>> to 100% CPU usage every once in a while (and becomes unresponsive),
> >>>> so that I've got to kill and restart.
> >>>> 
> >>>> Looking at the logs, there doesn't seem to be any particular error
> >>>> message, and it doesn't seem to be triggered by any specific action.
> >>>> If you need me to do anything specific for debugging purposes, or
> >>>> need more information, let me know.
> >>> 
> >>> I can completely attest to this and mine was so bad I had to remove
> >>> the patch.  Plasma would die but everything else would work after
> >>> that.
> >> 
> >> It turns out that Qt uses a continue statement in a do-while loop
> >> thereby creating an infinite loop. The attached patch should solve it.
> >> You have to put it in devel/qt4-corelib/files/ and rebuild that port.
> >> 
> >> I'm still trying to fix some more issues, but this should already
> >> help a lot, so please give it a try.
> > 
> > Still crashes with this patch and your latest patch for kdelibs:
> Here's an updated patch for devel/qt4-corelib. It turns out that kded4
> monitors a lot of files (2000+ in my case). That means the process
> (such as other parts of Qt) can no longer use select(2) on descriptors
> opened after those 2000+ because that's limited to 1024 (FD_SETSIZE).
> Qt doesn't do a bounds check when it tries to use such a descriptor
> with select and essentially a buffer overflow occurs that can cause
> a crash later on.

This patch solves my problem, thanks!

Max


More information about the kde-freebsd mailing list