| Summary: | [Regression] Konqueror error dialog and kcrash when accessing sidebar System button | ||
|---|---|---|---|
| Product: | TDE | Reporter: | Darrell <darrella> |
| Component: | tdebase | Assignee: | Timothy Pearson <kb9vqf> |
| Status: | REOPENED --- | ||
| Severity: | normal | CC: | bugwatch, darrella, fatzer2, kb9vqf, michele.calgaro |
| Priority: | P5 | ||
| Version: | R14.0.x [Trinity] | ||
| Hardware: | Other | ||
| OS: | Linux | ||
| Compiler Version: | TDE Version String: | ||
| Application Version: | Application Name: | ||
| Bug Depends on: | |||
| Bug Blocks: | 2968 | ||
| Attachments: |
Screen capture of error dialog (logged in as non-root user)
Screen capture of error dialog (logged in as root user) Konqueror kcrash backtrace Image of system button in konqueror nav bar Image showing double listing snapshot |
||
Created attachment 1717 [details]
Screen capture of error dialog (logged in as root user)
Created attachment 1718 [details]
Konqueror kcrash backtrace
When I type system:/ in the konqueror location bar, the Home Folder is listed and there is no crash. The error dialog is from tdebase/konqueror/sidebar/trees/dirtree_module/dirtree_module.cpp:422. Here is what I see from kdDebug(7004): tdeio (KDirListerCache): +KDirListerCache tdeio (KDirListerCache): [bool KDirListerCache::listDir(KDirLister*, const KURL&, bool, bool)] 0x94c6bc8 url=file:///root keep=false reload=false tdeio (KDirListerCache): [void KDirListerCache::stop(KDirLister*)] lister: 0x94c6bc8 tdeio (KDirListerCache): [void KDirListerCache::forgetDirs(KDirLister*)] 0x94c6bc8 tdeio (KDirListerCache): listDir: Entry not in cache or reloaded: file:///root tdeio (KDirListerCache): [bool KDirListerCache::listDir(KDirLister*, const KURL&, bool, bool)] 0x958c4a8 url=file:/// keep=true reload=false tdeio (KDirListerCache): listDir: Entry not in cache or reloaded: file:/// tdeio (KDirListerCache): [void KDirListerCache::slotEntries(TDEIO::Job*, const UDSEntryList&)] new entries for file:/// tdeio (KDirListerCache): [void KDirListerCache::slotEntries(TDEIO::Job*, const UDSEntryList&)] new entries for file:///root tdeio (KDirListerCache): [void KDirListerCache::slotResult(TDEIO::Job*)] finished listing file:/// tdeio (KDirListerCache): [void KDirListerCache::slotResult(TDEIO::Job*)] finished listing file:///root tdeio (KDirListerCache): [bool KDirListerCache::listDir(KDirLister*, const KURL&, bool, bool)] 0x9602100 url=system:/ keep=true reload=false tdeio (KDirListerCache): listDir: Entry not in cache or reloaded: system:/ tdeio (KDirListerCache): [bool KDirListerCache::listDir(KDirLister*, const KURL&, bool, bool)] 0x9602100 url=system:/ keep=true reload=false tdeio (KDirListerCache): [void KDirListerCache::stop(KDirLister*, const KURL&)] 0x9602100 url=system:/ tdeio (KDirListerCache): [void KDirListerCache::forgetDirs(KDirLister*, const KURL&, bool)] 0x9602100 _url: system:/ tdeio (KDirListerCache): listDir: Entry not in cache or reloaded: system:/ tdeio (KDirListerCache): [void KDirListerCache::slotEntries(TDEIO::Job*, const UDSEntryList&)] new entries for system:/ tdeio (KDirListerCache): [void KDirListerCache::slotResult(TDEIO::Job*)] finished listing system:/ tdeio (KDirListerCache): [void KDirListerCache::stop(KDirLister*)] lister: 0x958c4a8 tdeio (KDirListerCache): [void KDirListerCache::forgetDirs(KDirLister*)] 0x958c4a8 tdeio (KDirListerCache): [void KDirListerCache::forgetDirs(KDirLister*, const KURL&, bool)] 0x958c4a8 _url: file:/// tdeio (KDirListerCache): [void KDirListerCache::forgetDirs(KDirLister*, const KURL&, bool)] 0x958c4a8 item moved into cache: file:/// tdeio (KDirListerCache): Not adding a watch on file:/// because it contains a manually mounted subdir tdeio (KDirListerCache): [void KDirListerCache::stop(KDirLister*)] lister: 0x9602100 tdeio (KDirListerCache): [void KDirListerCache::forgetDirs(KDirLister*)] 0x9602100 tdeio (KDirListerCache): [void KDirListerCache::forgetDirs(KDirLister*, const KURL&, bool)] 0x9602100 _url: system:/ tdeio (KDirListerCache): [void KDirListerCache::forgetDirs(KDirLister*, const KURL&, bool)] 0x9602100 item moved into cache: system:/ tdeio (KDirListerCache): [void KDirListerCache::stop(KDirLister*)] lister: 0x94c6bc8 tdeio (KDirListerCache): [void KDirListerCache::forgetDirs(KDirLister*)] 0x94c6bc8 tdeio (KDirListerCache): [void KDirListerCache::forgetDirs(KDirLister*, const KURL&, bool)] 0x94c6bc8 _url: file:///root tdeio (KDirListerCache): [void KDirListerCache::forgetDirs(KDirLister*, const KURL&, bool)] 0x94c6bc8 item moved into cache: file:///root This *might* have been fixed when a problem noted in Bug 1708 was repaired (http://bugs.trinitydesktop.org/show_bug.cgi?id=1708#c40). Do you still see the problem with the latest GIT sources? Thanks! I still see the dialog. Commit 23006eea was pushed to git 2013-12-14, 16:47:32. My current package set was built after that time. I perform a source tree sync before compiling full package sets. (In reply to comment #5) > I still see the dialog. Commit 23006eea was pushed to git 2013-12-14, 16:47:32. > My current package set was built after that time. I perform a source tree sync > before compiling full package sets. OK, Ill look into it further. Thanks for testing! What is the "system" button? I am having a hard time anything matching that description in the Konqueror sidebar--can you attach a screenshot of Konqueror with the appropriate button circled? BTW I am quite familiar with the system:/ tdeioslave, just not this particular sidebar button. ;-) Created attachment 1735 [details]
Image of system button in konqueror nav bar
For some reason I don't have that button in my Konqueror setup. I added it manually and was able to reproduce the problem. This (and a few other sidebar dirlister problems) should be fixed in GIT hash ec12f48. Thanks for reporting! >For some reason I don't have that button in my Konqueror setup. I added it
>manually and was able to reproduce the problem.
Manually? How did you do that? On one of my systems I had to reset the bar to the defaults to restore the button, and then remove the other buttons I did not want.
(In reply to comment #10) > >For some reason I don't have that button in my Konqueror setup. I added it > >manually and was able to reproduce the problem. > Manually? How did you do that? On one of my systems I had to reset the bar to > the defaults to restore the button, and then remove the other buttons I did not > want. Right click on sidebar Add new folder item Rename folder item to System Change folder item icon Change folder item URL to system:/ Huh. I notice something odd. I removed the Amarok and Metabar buttons. When I view the context menu of Add New I see the options to restore the Amarok and Metabar buttons. After I remove the System button, there is no option in the Add New contents to restore the System button. (In reply to comment #12) > Huh. > > I notice something odd. I removed the Amarok and Metabar buttons. When I view > the context menu of Add New I see the options to restore the Amarok and Metabar > buttons. After I remove the System button, there is no option in the Add New > contents to restore the System button. Sounds like a new bug report to me... >Sounds like a new bug report to me... Bug 1774. Oh-oh. Select the System button. Verify the nav bar populates. Select a different button. Select the System button. Everything in the list now appears twice. I am unable to replicate this on all of my systems, but the double appearance is repeatable on my main office rig. I exited and deleted the tdesycoca files. Same double result after logging in. I found out how to trigger the double-double bug. Modify the nav bar button bar. Remove a button or add a button. The next time the System button is selected everything in the list appears twice. (In reply to comment #16) > I found out how to trigger the double-double bug. > > Modify the nav bar button bar. Remove a button or add a button. The next time > the System button is selected everything in the list appears twice. Any button or specifically a dirtree button? Any button. I can't replicate this. Any hints? *** Bug 1663 has been marked as a duplicate of this bug. *** Created attachment 1736 [details] Image showing double listing >I can't replicate this. Any hints? All I do: * "Right-click" on the nav bar button bar, but not on a button. * From the popup menu select Add New->Rollback to System Default. * Toggle back and forth several times between the Root Folder and System buttons. * Verify a single instance of each list item in the nav bar pane. * "Right-click" on the metabar button. * From the popup menu, select Remove. * Select the System button. * On my system the items in the nav bar pane are listed twice. Screen grab attached. Notice after I rolled back to the defaults, the list is still double. The only way I have discovered to restore the list to single occurrence is restart Trinity and then not modifying the nav bar buttons in any way. Created attachment 1843 [details] snapshot (In reply to comment #21) > Created attachment 1736 [details] > Image showing double listing The problem with double entries is caused by the fact that the system:/ button was added as a folder. Open the picture attached: - on the right is the config of the nav bar before Add New -> Revert to system default - on the left is the config of the nav bar after Add New -> Revert to system default The file dirtree.desktop is the file containing the definition of the system:/ button that was added by Add New -> Folder. Notice that on the left there is also a file called system.desktop which is the original definition of system:/ and which is reintroduce by Add New -> Revert to system default When both files are present, the system.desktop's system:/ button has double entries, the dirtree.desktop's system:/ button has single entries. Deleting the system:/'s dirtree.desktop file, exiting and relaunching konqueror, makes the double entries disappear. I suspected that when both files are present, what happen was this: 1) first the system.desktop nav bar entry is populated 2) then when the dirtree.desktop file is handled, whatever entry in the nav bar called "system:/" is populated, resulting in the system.desktop nav bar entry to have double entries But it is not the case. I tried with additional dirtree0.desktop nad dirtree1.desktop files all pointing to system:/ but the original system.desktop system:/ button only have double entries and not triple or quadruple as I expected. Also the problem seems to be localized to system:/ only. I tried other entries, but could get any doubles. I don't have a dirtree.desktop file. ls /opt/trinity/share/apps/konqsidebartng/entries amarok.desktop bookmarks.desktop history.desktop home.desktop metabar.desktop remote.desktop root.desktop services.desktop system.desktop grepping the entire source tree reveals no files named dirtree.desktop. I presume the file is (supposed to be) created when tdebase/konqueror/sidebar/trees is compiled. That does not seem to be happening on my system. If the file is suppose to be compiled and installed, I don't see anything in the CMakeLists.txt files. I do have a dirtree_module.desktop file: /opt/trinity/share/apps/konqsidebartng/dirtree/dirtree_module.desktop Why does the double listing occur only when modifying the nav bar buttons? > I don't have a dirtree.desktop file. > ls /opt/trinity/share/apps/konqsidebartng/entries The folder depends on the Konqueror profile being used. In my case it is ~/trinity/share/apps/konqsidebartng/filemanagement/entries (or something very similar, I am not on TDE now) The file dirtree.desktop (or other dirtreeX.desktop) are created when a folder button is added to the nav bar. Make a copy of ~/trinity/share/apps/konqsidebartng, then add a button to the nav bar and compare ~/trinity/share/apps/konqsidebartng to the copy you made. Somewhere you will find a new file. > Why does the double listing occur only when modifying the nav bar buttons? Still don't know, I will look into the code today or tomorrow >The folder depends on the Konqueror profile being used. In my case it is
>~/trinity/share/apps/konqsidebartng/filemanagement/entries
Doh! I was looking in the system directory, not my profile directory. :)
I do not have any dirtree.desktop files. Am I supposed to? I don't know.
I might have stumbled across a solution. I have no idea why the solution succeeds.
In the system.desktop file is a key named Open. The value is true. I noticed all other desktop files in this area are set to false. On a whim I set all profile system.desktop files to Open=false.
I rolled back the nav bar to the defaults. I exited Trinity and deleted the tdesycoca cache. (I always delete the cache when I perform this kind of testing.)
I started Trinity.
I removed the Amarok and Metabar buttons from the nav bar.
I selected the System button from the nav bar.
No double entries.
Can you replicate this possible fix? If yes, then please conjure up an explanation. :) I have no idea what purpose the Open key serves. I have no idea what _else_ might break when changing the value to false.
I tried this same solution (Open=false) on three different user accounts as well as a new profile. Same results: no double list. If this fix is to become permanent, we need to update system.desktop in the sources (tdebase/konqueror/sidebar/trees/init/system.desktop, which installs to /opt/trinity/share/apps/konqsidebartng/entries/system.desktop), as well as update the r14-xdg-update script. But first we need to know why this solution succeeds. :) > I tried this same solution (Open=false)
On my system too, this seems to solve the double entries problem, even with multiple system buttons.
I will have a look in the code to see what that Open=true does.
I did a (very) quick check in the code. In KonqSidebarTree::loadTopLevelItem(), if Open is true and the nav bar item is explandable, it sets the item to true. This does different things depending on the module type (history, bookmarks, folder). For folder type, it goes on to create a DirListener that at the end will populate the module through KonqSidebarDirTreeModule::slotNewItems(). My rough guess is that there is a bug here, since an existing entry should not be added twice. I need some time to test these if required, but I would loke to start focusing on the handbook review. Setting Open to false in the system.desktop file doesn't seem to cause any harm in my system too though. |
Created attachment 1716 [details] Screen capture of error dialog (logged in as non-root user) Using the latest R14. In the konqueror sidebar, when I select the System button, an error dialog appears and konqueror crashes. Typically the kcrash does not happen on the first attempt at selecting the System button. After receiving the error dialog, I close konqueror, reopen, and again select the System button. Then kcrash appears with the backtrace. As noted in the error dialog, my user accounts are stored in /home/users/$USER rather than the traditional $HOME/$USER. That difference likely is irrelevant because I see the same dialog when logged in as root. The dialog and crash occur with a fresh R14 profile. The crash does not occur in 3.5.13.2. The bug seems related to $HOME because when konqueror does not crash, the sidebar System pane is missing the Home Folder option. I'm attaching dialog images and kcrash backtrace.