wierd QT warnings and ksycoca errors

Sunil funtoos at yahoo.com
Tue May 10 03:56:03 CEST 2005


> There are some places in the kde sources where
> something like this happens. 
> Usually there is only a file close required. See the
> appended patch, which 
> fixes several problems 

your patch doesn't fix the problem because the problem
with updating ksycoca database is coming from
database.close() line in kbuildsycoca.cpp :

    if (!database.close()) 
    {  
      fprintf(stderr, "kbuildsycoca: ERROR writing
database '%s'!\n",
database.name().local8Bit().data());
      fprintf(stderr, "kbuildsycoca: Disk full?\n");
#ifdef KBUILDSYCOCA_GUI
      if (!silent)
        KMessageBox::error(0, i18n("Error writing
database '%1'.\nCheck that the permissions are correct
on the directory and the disk is not
full.\n").arg(path.local8Bit().data()),
i18n("KBuildSycoca"));
#endif
      return false;
    }

kdecore/ksavefile.cpp has the following piece of code
where close() renames the temporary file to the
ksycoca in /var/tmp/kdecache-<username>/. This fails
because some process has opened that file READ_ONLY.
It looks like it is kded daemon as one of processes
which has it opened. But I am not sure how to ask
these processes to close this file.

   if (mTempFile.close())
   {
      if
(0==KDE_rename(QFile::encodeName(mTempFile.name()),
QFile::encodeName(mFileName)))
         return true; // Success!
      mTempFile.setError(errno);
   }

this is where processes open the ksycoca database in
kdecore/ksycoca.cpp:

   kdDebug(7011) << "Trying to open ksycoca from " <<
path << endl;
   QFile *database = new QFile(path);
   bool bOpen = database->open( IO_ReadOnly );

I am not sure how to tackle this. In Unix its so easy
to assume that readers won't stop writers from
writing. Do you think cygwin can demand different
semantics from kde folks, wherein its the kded which
does the update to the database always (currently eny
process can call kbuildsycoca to update the database)
and everybody, who has the database opened, is asked
to close the database before rename() is issued by
kded? Should I file a bug report with kde?

> 
> 
> > 2. I get these in my kde session log all the time:
> >
> > QObject::disconnect: Unexpected null parameter
> > QObject::connect: Cannot connect (null)::hide() to
> > Baghira::DeMaximizer::hide()
> >
> > I am not sure if they are errors or warnings.
> Anyone
> > any idea?
> Which application causes this warnings ?  It seems
> that a qt signal/slot 
> connection couldn't be established. The slot is
> named in DeMaximizer::hide() 
> in namespace Baghira.  

I am not sure which process it is. I just see these
repeated very often in the log file.

Thanks a lot,
-Sunil


		
__________________________________ 
Do you Yahoo!? 
Read only the mail you want - Yahoo! Mail SpamGuard. 
http://promotions.yahoo.com/new_mail 


More information about the kde-cygwin mailing list