classes.db
Oliver Eiden
o.eiden at pop.ruhr.de
Thu Jun 17 11:12:27 BST 1999
Hi !
On my system the file classes.db is sometimes created in my home-directory. I
guess that isn't intended are at least at shouldn't be intended.
BTW: Kdevelop acts differently, if started from the command line or via kpanel,
as described below.
Have a nice day !
Oliver
Micko Roland wrote:
>
> Hi Jonas,
>
> I've been investigating the problem, and it seems to be a problem of the
> file classes.db.
> Here is what i found out.
>
> 1. I was able to start it twice, as one instance has been started from KWM
> and the second from the commandline, where the working directory is
> different from my home directory.
>
> 2. Each time a project is opened the file classes.db is also opened.I don't
> have any information about gdbm_open so I don't have a glue about the
> parameters that are used, but I guess that the file is opened exclusiv. So
> If you try to open it once again with a second instance of KDevelop that
> tries to access the same file, the call is unsucessfull. So any further
> access to this file leads to the assertion error. As there is information of
> already known classes stored, it has to be opened exclusiv or you must use
> file locking mechanism to inhibit concurrent read, writes on the file.
>
> I think this is also the solution to the thread >> A really huge bug <<.
>
> I myself changed the code so the file is created for each instance of
> KDevelop with the name classes.db.<pid>. This is not what you intended but
> it is a quick and dirty solution which helps me to continue to work.
>
> I changed the constructor of CClassStore to
>
> CClassStore::CClassStore()
> : classIterator( classes )
> {
> char achFileName[256]; <--
>
> sprintf ( achFileName, "classes.db.%i", getpid ( ) ); <--
>
> classes.setAutoDelete( true );
>
> // Initialize the persistant class store.
>
> globalStore.setFilename( achFileName ); <--
>
> // Open the store if it exists, else create it.
>
> if( globalStore.exists() )
>
> globalStore.open();
>
> else
>
> globalStore.create();
>
> }
>
> I hope this helps
>
> Roland Micko
> ICN CA MR EG 2
>
> SIEMENS AG
> Hofmannstr. 51
> 81359 München
>
> Tel.: +4989/722-21632
> Fax.: +4989/722-47420
> email: roland.micko at icn.siemens.de
>
> > -----Ursprüngliche Nachricht-----
> > Von: Jonas Nordin [SMTP:jonas.nordin at cenacle.se]
> > Gesendet am: Dienstag, 15. Juni 1999 18:09
> > An: kdevelop at fara3.cs.uni-potsdam.de
> > Betreff: Re: Kdevelop can only be started twice
> >
> > > Hi Roland!
> > >
> > > KDevelop uses a DataBase and i think the problem is that if you start
> > kdevelop
> > > twice kdevelop would try to open the database again. And here is the
> > reason
> > > why kdevelop crash.
> >
> > I've started to add support for storing parsed classes(so they don't need
> > to be
> > reparsed at startup). Perhaps it has something todo with gdbm?
> >
> > /J
More information about the KDevelop
mailing list