Bug 65437

Summary: kontact crashes because it searches its calendar in the wrong place
Product: [Applications] korganizer Reporter: Philippe Rigault <prigault>
Component: generalAssignee: Cornelius Schumacher <schumacher>
Status: RESOLVED FIXED    
Severity: crash    
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Philippe Rigault 2003-10-03 21:07:49 UTC
Version:            (using KDE KDE 3.1.92)
Installed from:    Compiled From Sources
Compiler:          GCC 3.3.1 
OS:          Linux

This is done on a fresh KDE account created in 3.1.92 (no legacy files in KDEHOME)

Within kontact, saving the calendar (korganizer) defaults to the direcory $KDEHOME/share/apps/korganizer. (note: see bug #64766 for a potential problem there)

However, when kontact is started from the konsole, it looks for the calendar in $KDEHOME/share/apps/kontact and crashes because it can't find it. This is the output of 'kontact' lauched from the konsole:

kprefs: KPrefs::readConfig()
kio (KTrader): KServiceTypeProfile::offers( Kontact/Plugin, )
kio (KSycoca): Trying to open ksycoca from /var/tmp/kdecache-kdetest/ksycoca
kio (KTrader): Returning 10 offers
kontact (core): Loading Plugin: Mail
kontact: LIBNAMEPART: libkmailpart
kontact (core): Loading Plugin: Contacts
kontact: LIBNAMEPART: libkaddressbookpart
kontact (core): Loading Plugin: Todo List
kontact: LIBNAMEPART: libkorganizerpart
kontact (core): Loading Plugin: Calendar
kontact: LIBNAMEPART: libkorganizerpart
kontact (core): Loading Plugin: Weather
kontact (core): Loading Plugin: News
kontact (core): Loading Plugin: Notes
kontact: WARNING: KXMLGUIClient::setXMLFile: cannot find .rc file kpknotesplugin.rc
kontact (core): Loading Plugin: Synchronization
kontact (core): Loading Plugin: NewsTicker
kontact (core): Loading Plugin: Summary
kontact: Plugging new_mail
kontact (core): Added plugin
kontact: Plugging new_contact
kontact (core): Added plugin
kontact: Plugging new_todo
kontact (core): Added plugin
kontact: Plugging new_event
kontact (core): Added plugin
kparts: MainWindow::createGUI, part=(nil)
kontact: Core:createPart(): libkorganizerpart
kontact: Creating new KPart
kprefs: Creating KPrefs (135417296)
kprefs: KPrefs::readConfig()
libkdepim: KPimPrefs::usrReadConfig()
libkcal: CalendarResources::init
kresources: Factory::self()
kio (KTrader): KServiceTypeProfile::offers( KResources/Plugin, )
kio (KTrader): Returning 13 offers
kresources: ManagerImpl::ManagerImpl()
kresources: Connecting DCOP signals...
kresources: ManagerImpl::readConfig()
kresources: Factory::self()
kontact: ManagerImpl::readResourceConfig() uYG5v3z4IH
kontact: Factory::resource( file, config)
kio (KDirWatch): Can't use FAM (fam daemon not running?)
kio (KDirWatch): Available methods: Stat
kio (KDirWatch): Added File /home/kdetest/.kde/share/apps/kontact/std.ics NotExisting [KDirWatch-1]
kio (KDirWatch): Global Poll Freq is now 500 msec
kio (KDirWatch):  Started Polling Timer, freq 500
kio (KDirWatch):  Setup Stat (freq 500) for /home/kdetest/.kde/share/apps/kontact/std.ics
libkcal: Opening resource Default KOrganizer resource
kresources: Opening resource Default KOrganizer resource
libkcal: Opening resource Default KOrganizer resource with URL file:/home/kdetest/.kde/share/apps/kontact/std.ics
libkcal: FileStorage::load(): '/home/kdetest/.kde/share/apps/kontact/std.ics'
libkcal: ICalFormat::load() /home/kdetest/.kde/share/apps/kontact/std.ics
libkcal: ICalFormat::load() load error
korganizer: CalendarView::CalendarView( Calendar )
kio (KTrader): KServiceTypeProfile::offers( Calendar/Decoration, )
kio (KTrader): Returning 2 offers
kontact: ERROR: Communication problem with kontact, it probably crashed.

Two remarks:
	- When kontact is started from the panel, it does not crash.
	- This bug may be related to 64766
Comment 1 Daniel Molkentin 2003-10-26 18:52:46 UTC
Can you still reproduce that with a recent version?
Comment 2 Philippe Rigault 2003-11-05 19:45:00 UTC
Tested with KDE 3.1.93

Kontact no longer crashes, however there is still a problem related to the name of the application (kontact vs korganizer), which results in improper behaviour.

More specifically (for the following, $KDEHOME=/home/kdetest/.kde):

1. On startup, Kontact searches for the standard calendar in $KDEHOME/share/apps/kontact

libkcal: Opening resource Default KOrganizer resource
kresources: Opening resource Default KOrganizer resource
libkcal: Opening resource Default KOrganizer resource with URL file:/home/kdetest/.kde/share/apps/kontact/std.ics
libkcal: FileStorage::load(): '/home/kdetest/.kde/share/apps/kontact/std.ics'
libkcal: ICalFormat::load() /home/kdetest/.kde/share/apps/kontact/std.ics
libkcal: ICalFormat::load() load error
korganizer: CalendarResources used by KOrganizer:
kresources: Resource:
kresources:   Name: Default KOrganizer resource
kresources:   Identifier: NM0ovhVRpq
kresources:   Type: file
kresources:   OpenCount: 1
kresources:   ReadOnly: no
kresources:   Active: yes
kresources:   IsOpen: yes
libkcal:   Url: file:/home/kdetest/.kde/share/apps/kontact/std.ics
libkcal: FileStorage::load(): '/home/kdetest/.kde/share/apps/kontact/std.ics'
libkcal: ICalFormat::load() /home/kdetest/.kde/share/apps/kontact/std.ics
libkcal: ICalFormat::load() load error
libkcal: FileStorage::load(): '/home/kdetest/.kde/share/apps/kontact/std.ics'
libkcal: ICalFormat::load() /home/kdetest/.kde/share/apps/kontact/std.ics
libkcal: ICalFormat::load() load error

2. Within kontact, calendar saving actions do the following (INCORRECT) actions
  - 'Save As' opens a file menu defaulting to $KDEHOME/share/apps/korganizer/ . Proper behaviour should be defaulting to $KDEHOME/share/apps/kontact.
  - 'Save' has the same action as 'Save As' (opening a file menu defaulting to $KDEHOME/share/apps/korganizer/). This is inconsistent with the 'Save' expected behaviour, because 'Save' should be enabled only when the file being saved is known already. The solution here is to disable 'Save' until the user has chosen a filename. An alternate solution is to save directly as $KDEHOME/share/apps/kontact/std.ics, which is what is done silently upon exiting kontact --see below. But for this to be consistent with 'Save As', 'Save As' must point by default to $KDEHOME/share/apps/kontact.

3. Leaving Kontact ('Quit') saves AUTOMATICALLY without confirmation) to $KDEHOME/share/apps/kontact/std.ics. The absence of confirmation is bad and should be corrected.

libkcal: CalendarResources::save()
libkcal: ICalFormat::save(): /home/kdetest/.kde/share/apps/kontact/std.ics
korganizer: ActionManager::writeSettings
kdecore (KConfigSkeleton): KConfigSkeleton::writeConfig()
kdecore (KConfigSkeleton): KConfigSkeleton::readConfig()
libkdepim: KPimPrefs::usrReadConfig()
kparts: Part::~Part 0x81c1fc8
korganizer: ~CalendarView()
korganizer: ~CalendarView() done
libkcal: CalendarResources::destructor
libkcal: CalendarResources::close

Conclusion:

The following problems are either addressed or outside of this bug:
  - Kontact does not crash any more because of this problem
  - The kontact/korganizer problem stems from another problem (incorrect registration of kontact components, aka the evil bug http://bugs.kde.org/show_bug.cgi?id=57204 )

However, I leave this bug open because of two problems specific to this report
  - 'Save' and 'Save As' inconsistent behaviour.
  - 'Quit' triggers a save without confirmation. It should ask for Save/Discard/Cancel.


Comment 3 Cornelius Schumacher 2003-11-16 11:10:52 UTC
The inconsistency is fixed.

There intentionally is no saving confirmation. The default calendar is no document, but a persistent object.