After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 318996 - Yelp crashes when clicking on a manual, click back, and clicking on the manual again
Yelp crashes when clicking on a manual, click back, and clicking on the manua...
Status: RESOLVED FIXED
Product: yelp
Classification: Applications
Component: General
git master
Other Linux
: High critical
: ---
Assigned To: Yelp maintainers
Yelp maintainers
: 307417 358489 363277 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2005-10-16 01:06 UTC by Brent Smith (smitten)
Modified: 2009-09-22 01:48 UTC
See Also:
GNOME target: ---
GNOME version: 2.13/2.14


Attachments
Simple frag_id NULL test (416 bytes, patch)
2006-09-18 13:52 UTC, Matt Keenan (IRC:MattMan)
none Details | Review

Description Brent Smith (smitten) 2005-10-16 01:06:10 UTC
1. Click on the Accessibility Guide
2. Click the back button in the toolbar before yelp finishes loading the document
3. Click on the Accessibility Guide again

Here is the stack trace:

Backtrace was generated from '/opt/gnome2/bin/yelp'

Using host libthread_db library "/lib/tls/libthread_db.so.1".
`system-supplied DSO at 0xffffe000' has disappeared; keeping its symbols.
[Thread debugging using libthread_db enabled]
[New Thread -1226582336 (LWP 7097)]
[New Thread -1294005328 (LWP 7109)]
[New Thread -1285612624 (LWP 7108)]
[New Thread -1277219920 (LWP 7107)]
[New Thread -1268827216 (LWP 7106)]
[New Thread -1259992144 (LWP 7102)]
[New Thread -1234715728 (LWP 7101)]
0xffffe410 in __kernel_vsyscall ()

Thread 1 (Thread -1226582336 (LWP 7097))

  • #0 __kernel_vsyscall
  • #1 __waitpid_nocancel
    from /lib/tls/libpthread.so.0
  • #2 libgnomeui_segv_handle
    at gnome-ui-init.c line 749
  • #3 <signal handler called>
  • #4 strcmp
    from /lib/tls/libc.so.6
  • #5 yelp_pager_page_contains_frag
    at yelp-pager.c line 362
  • #6 pager_page_cb
    at yelp-window.c line 1653
  • #7 IA__g_cclosure_marshal_VOID__STRING
    at gmarshal.c line 496
  • #8 IA__g_closure_invoke
    at gclosure.c line 492
  • #9 signal_emit_unlocked_R
    at gsignal.c line 2485
  • #10 IA__g_signal_emit_valist
    at gsignal.c line 2244
  • #11 IA__g_signal_emit_by_name
    at gsignal.c line 2312
  • #12 xslt_yelp_document
    at yelp-xslt-pager.c line 451
  • #13 xsltApplyOneTemplateInt
    at transform.c line 1750
  • #14 xsltCallTemplate
    at transform.c line 3175
  • #15 xsltApplyOneTemplateInt
    at transform.c line 1648
  • #16 xsltChoose
    at transform.c line 3586
  • #17 xsltApplyOneTemplateInt
    at transform.c line 1648
  • #18 xsltProcessOneNode
    at transform.c line 1462
  • #19 xsltApplyStylesheetInternal
    at transform.c line 4184
  • #20 xslt_pager_process
    at yelp-xslt-pager.c line 251
  • #21 g_idle_dispatch
    at gmain.c line 3813
  • #22 g_main_dispatch
    at gmain.c line 1934
  • #23 IA__g_main_context_dispatch
    at gmain.c line 2484
  • #24 g_main_context_iterate
    at gmain.c line 2565
  • #25 IA__g_main_context_iteration
    at gmain.c line 2624
  • #26 IA__gtk_main_iteration
    at gtkmain.c line 1059
  • #27 walker_walk_xml
    at yelp-db-pager.c line 441
  • #28 walker_walk_xml
    at yelp-db-pager.c line 457
  • #29 walker_walk_xml
    at yelp-db-pager.c line 457
  • #30 db_pager_parse
    at yelp-db-pager.c line 277
  • #31 xslt_pager_process
    at yelp-xslt-pager.c line 191
  • #32 g_idle_dispatch
    at gmain.c line 3813
  • #33 g_main_dispatch
    at gmain.c line 1934
  • #34 IA__g_main_context_dispatch
    at gmain.c line 2484
  • #35 g_main_context_iterate
    at gmain.c line 2565
  • #36 IA__g_main_loop_run
    at gmain.c line 2769
  • #37 bonobo_main
    at bonobo-main.c line 312
  • #38 main
    at yelp-main.c line 386
  • #0 __kernel_vsyscall

Comment 1 Brent Smith (smitten) 2005-10-16 22:15:54 UTC
This is reproducible, so marking NEW.
Comment 2 Brent Smith (smitten) 2005-10-16 22:17:06 UTC
*** Bug 307417 has been marked as a duplicate of this bug. ***
Comment 3 Daniel Holbach 2006-04-12 14:36:53 UTC
Similar back trace at https://launchpad.net/products/yelp/+bug/35892
Comment 4 Daniel Gryniewicz 2006-06-20 21:32:29 UTC
Also reproduced on Gentoo:
http://bugs.gentoo.org/show_bug.cgi?id=136761
Comment 5 Brent Smith (smitten) 2006-07-01 17:27:20 UTC
Gonna fix this soon.   putting this here for my own reference.

smitten@home:~$ YELP_DEBUG="all" YELP_DEBUG_FILTER="yelp-window:yelp-xslt-pager" /opt/gnome2/bin/yelp &
[1] 13680
smitten@home:~$ yelp-window.c:911: yelp_window_load: entering
yelp-window.c:912:   uri = "x-yelp-toc:"
yelp-window.c:1000: window_do_load: entering
yelp-window.c:1956: pager_start_cb: entering
yelp-window.c:1957:   page_id="index"
yelp-window.c:1985: pager_page_cb: entering
yelp-window.c:1986:   page_id="index"
yelp-window.c:1773: window_handle_page: entering
yelp-window.c:1774:   page->page_id  = "index"
yelp-window.c:1775:   page->title    = "Help Topics"
yelp-window.c:1776:   page->contents = 2500 bytes
yelp-window.c:1854:   uri            = file:///opt/gnome2/share/yelp/toc.xml
yelp-window.c:3165: idle_write: entering
yelp-window.c:3171:   context->buffer = 2500 bytes
yelp-window.c:3172:   context->cur    = 0
yelp-window.c:3173:   context->length = 2500
yelp-window.c:2064: html_uri_selected_cb: entering
yelp-window.c:2065:   uri = "x-yelp-toc:Desktop"
yelp-window.c:911: yelp_window_load: entering
yelp-window.c:912:   uri = "x-yelp-toc:Desktop"
yelp-window.c:1000: window_do_load: entering
yelp-window.c:1956: pager_start_cb: entering
yelp-window.c:1957:   page_id="Desktop"
yelp-window.c:1773: window_handle_page: entering
yelp-window.c:1774:   page->page_id  = "Desktop"
yelp-window.c:1775:   page->title    = "Desktop"
yelp-window.c:1776:   page->contents = 4071 bytes
yelp-window.c:1854:   uri            = file:///opt/gnome2/share/yelp/toc.xml#Desktop
yelp-window.c:3165: idle_write: entering
yelp-window.c:3171:   context->buffer = 4071 bytes
yelp-window.c:3172:   context->cur    = 0
yelp-window.c:3173:   context->length = 4071
yelp-window.c:2064: html_uri_selected_cb: entering
yelp-window.c:2065:   uri = "file:///opt/gnome2/share/gnome/help/user-guide/C/user-guide.xml"
yelp-window.c:911: yelp_window_load: entering
yelp-window.c:912:   uri = "file:///opt/gnome2/share/gnome/help/user-guide/C/user-guide.xml"
yelp-window.c:1000: window_do_load: entering
yelp-xslt-pager.c:164: xslt_pager_process: entering
PROFILE [11:26:00]: entering xslt_pager_process
yelp-window.c:1956: pager_start_cb: entering
yelp-window.c:1957:   page_id="index"
yelp-window.c:1000: window_do_load: entering

(yelp:13680): GLib-GObject-WARNING **: gsignal.c:1739: instance `0x818f000' has no handler with id `431'

(yelp:13680): GLib-GObject-WARNING **: gsignal.c:1739: instance `0x818f000' has no handler with id `437'

(yelp:13680): GLib-GObject-WARNING **: gsignal.c:1739: instance `0x818f000' has no handler with id `438'

(yelp:13680): GLib-GObject-WARNING **: gsignal.c:1739: instance `0x818f000' has no handler with id `439'

(yelp:13680): GLib-GObject-WARNING **: gsignal.c:1739: instance `0x818f000' has no handler with id `440'
yelp-window.c:1956: pager_start_cb: entering
yelp-window.c:1957:   page_id="Desktop"
yelp-window.c:1773: window_handle_page: entering
yelp-window.c:1774:   page->page_id  = "Desktop"
yelp-window.c:1775:   page->title    = "Desktop"
yelp-window.c:1776:   page->contents = 4071 bytes
yelp-window.c:1854:   uri            = file:///opt/gnome2/share/yelp/toc.xml#Desktop
yelp-window.c:3165: idle_write: entering
yelp-window.c:3171:   context->buffer = 4071 bytes
yelp-window.c:3172:   context->cur    = 0
yelp-window.c:3173:   context->length = 4071
yelp-xslt-pager.c:357: xslt_yelp_document: entering
yelp-xslt-pager.c:370: xslt_yelp_document:   page_id = "index"
Comment 6 Matt Keenan (IRC:MattMan) 2006-09-18 13:51:01 UTC
This can also be re-created doing :

 - Launch yelp
 - Click on "Desktop User Guide" on right pane.
 - As it attempts to load the left menu is briefly displayed in
   the right pane (not sure this is right), really visible on slower
   systems.
 - While the menu is being displayed click on one of the items, e.g. 
   Accessibility
 - Sometimes yelp will crash, with the same stack trace e.g.
   strcmp() in yelp_pager_page_contains_frag().
 - Other times a warning dialog is displayed containing :

	The section "ApplicatoinsAccessibility" does 
	not exist in this document. If you were
	directed to this section from a Help button	
	in an application, please report this ot the
	maintainers of that application.

 - Either of the above will only happen once, subsequent repeats will
   load the relevant section that is clicked on.

This would seem to be a initialisation issue, frag_page_id in the function
yelp_pager_page_contains_frag() is being set to NULL returned from :

   YELP_PAGER_GET_CLASS (pager)->resolve_frag (pager, frag_id);

The fact that this only appears to happen the first time throgh the above
sequence of events, would mean something has not been assigned/set before
this is done. So returning NULL for the frag_id I would guess is probably
perfectly valid, so in my opinion a simple check for NULL would suffice.

Attached a simple patch.


Comment 7 Matt Keenan (IRC:MattMan) 2006-09-18 13:52:36 UTC
Created attachment 72977 [details] [review]
Simple frag_id NULL test
Comment 8 Don Scorgie 2006-09-30 13:57:33 UTC
*** Bug 358489 has been marked as a duplicate of this bug. ***
Comment 9 Don Scorgie 2006-10-20 10:29:39 UTC
*** Bug 363277 has been marked as a duplicate of this bug. ***
Comment 10 Matt Keenan (IRC:MattMan) 2006-12-14 14:17:04 UTC
Ping to see what status of this is at ;)
Comment 11 Dimitur Kirov 2006-12-14 15:03:49 UTC
I cannot reproduce it anymore. My current Yelp is 2.16.1 
Comment 12 Matt Keenan (IRC:MattMan) 2006-12-14 16:09:01 UTC
Just tried recreating this with yelp 2.16.2, and the bug still happens 
for me. You really have to be quite quick with your clicking and it is
more visible on older systems, the attached patch once applied does avert the
crash.
e.g.
  
   - Launch Yelp
   - Select "Panel Applets" from left pane
   - From right Pane select "Clock Manual"
     Before the clock manual is actually displayed
     the contents of the left pane gets displayed in the right pane
     e.g. Desktop
 
          Panel Applets
          System Tools
          Other Documentation
          Manual Pages

   - This may be only visible on older/slower systems.
     if you quickly select one of these items, one some occasions yelp will
     crash, other occasions an error dialog as mentioned before is shown.

I am testing this in Solaris. The patch, pretty simple in my view does solve the
crash.
Comment 13 Don Scorgie 2007-08-07 19:01:10 UTC
This is fixed with the new pager system in 2.19.1 (what isn't?).  Marking as Fixed and the the patch as Obsolete.