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 357248 - [blocked] Insert F in Gaim crashes Gaim, causes Insert to become "sticky"
[blocked] Insert F in Gaim crashes Gaim, causes Insert to become "sticky"
Status: RESOLVED FIXED
Product: orca
Classification: Applications
Component: general
1.0.x
Other All
: Normal normal
: ---
Assigned To: Rich Burridge
Orca Maintainers
Depends on: 357847
Blocks:
 
 
Reported: 2006-09-22 21:53 UTC by Joanmarie Diggs (IRC: joanie)
Modified: 2006-09-26 21:26 UTC
See Also:
GNOME target: ---
GNOME version: 2.15/2.16


Attachments
Patch to allieviate the "sticky" problem. (852 bytes, patch)
2006-09-25 20:40 UTC, Rich Burridge
none Details | Review

Description Joanmarie Diggs (IRC: joanie) 2006-09-22 21:53:31 UTC
Please describe the problem:
If you are in a chat window, in the text box where you type a message, pressing Insert F to obtain text attributes results in the following:

1. Gaim crashing
2. Orca behaving as if the Insert key were being pressed, even though it is not

Steps to reproduce:
1. Launch Orca
2. Launch Gaim
3. Start a chat with one of your "buddies"
4. In the text box where messages are to be typed, press Insert F.
5. Press Alt F1 for the Applications menu
6. Press Down Arrow


Actual results:
Upon executing step 4, Gaim crashes.
Upon executing step 6, Orca announces "lower" rather than moving you down within the Applications menu.

Expected results:
Gaim wouldn't crash, and the Insert key would not become "sticky."

Does this happen every time?
Yes

Other information:
Ubuntu Edgy Eft, Orca from CVS HEAD, Gaim 2.0 beta 3.1 (the package that is included with Edgy).
Comment 1 Rich Burridge 2006-09-22 22:47:29 UTC
I have submitted a bug (156377) against gaim on SourceForge for this.

See:

http://sourceforge.net/tracker/index.php?func=detail&aid=1563774&group_id=235&atid=100235

The gaim stack trace on Solaris with gaim v2.0.0beta2 is:

t@1 (l@1) signal ABRT (Abort) in _lwp_kill at 0xfef68697
0xfef68697: _lwp_kill+0x0007:   jae      _lwp_kill+0x15 [ 0xfef686a5, .+0xe ]
(dbx) where
current thread: t@1
=>[1] _lwp_kill(0x1, 0x6), at 0xfef68697
  [2] _thr_kill(0x1, 0x6), at 0xfef65b40
  [3] raise(0x6), at 0xfef2dd04
  [4] abort(0x8747180, 0x0, 0xfee33eb4, 0x8045e84, 0xfecc5ee6, 0x8538838), at 0xfef10108
  [5] g_logv(0x0, 0x4, 0xfc6c1f90, 0x80463bc), at 0xfedd1238
  [6] g_log(0x0, 0x4, 0xfc6c1f90, 0xfc6c2000, 0x46f, 0xfc6c1f48), at 0xfedd1265
  [7] atk_text_attribute_get_value(0x16, 0x3), at 0xfc6bf3f2
  [8] gail_misc_add_to_attr_set(0x872d488, 0x8753c60, 0x16), at 0xfcaf2ce8
  [9] gail_text_view_get_default_attributes(0x83d0ee0), at 0xfc77f56b
  [10] atk_text_get_default_attributes(0x83d0ee0, 0x804665c, 0x8046510, 0x8046598, 0x8046464, 0xfc1c7f52), at 0xfc6be99d
  [11] impl_getDefaultAttributes(0x84c1164, 0x804665c), at 0xfc1cf336
  [12] _ORBIT_skel_small_Accessibility_Text_getDefaultAttributes(0x84c1164, 0x80464f0, 0x0, 0x8046510, 0x804665c, 0xfc1cf30c), at 0xfc1c7f52
  [13] ORBit_POAObject_invoke(0x87dbdb8, 0x80464f0, 0x0, 0x8046510, 0x8046598, 0x804665c), at 0xfc12eb79
  [14] ORBit_OAObject_invoke(0x87dbdb8, 0x80464f0, 0x0, 0x8046510, 0x8046598, 0x804665c), at 0xfc1330a8
  [15] ORBit_small_invoke_adaptor(0x87dbdb8, 0x8753348, 0xfc1e82d0, 0x8046598, 0x804665c), at 0xfc12078d
  [16] ORBit_POAObject_handle_request(0x87dbdb8, 0x8753c24, 0x0, 0x0, 0x0, 0x8753348, 0x804665c), at 0xfc12efc0
  [17] ORBit_POAObject_invoke_incoming_request(0x87dbdb8, 0x8753348, 0x804665c), at 0xfc12f3d0
  [18] ORBit_POA_handle_request(0x817ecf8, 0x8753348, 0x8753360), at 0xfc12f865
  [19] ORBit_handle_request(0x817e1b8, 0x8753348), at 0xfc132e70
  [20] giop_connection_handle_input(0x8480dd8), at 0xfc11d97d
  [21] link_connection_io_handler(0x0, 0x1, 0x8480dd8), at 0xfc1391f6
  [22] link_source_dispatch(0x8550270, 0xfc1391a0, 0x8480dd8), at 0xfc13adf6
  [23] g_main_dispatch(0x8168278), at 0xfedc9690
  [24] g_main_context_dispatch(0x8168278), at 0xfedca779
  [25] g_main_context_iterate(0x8168278, 0x1, 0x1, 0x8156558), at 0xfedcab99
  [26] g_main_loop_run(0x83d6588), at 0xfedcb19e
  [27] gtk_main(0x8046ef4, 0x8046da0, 0xfeffa840, 0x812c630, 0x1, 0x0), at 0xfc9113f7
  [28] main(0x1, 0x8046de4, 0x8046dec), at 0x80f86d2
(dbx) 

Orca is having problems at this point because it's getting COMM_FAILURE's:

Traceback (most recent call last):
  • File "/usr/lib/python2.5/site-packages/orca/input_event.py", line 178 in processInputEvent
    consumed = self._function(script, inputEvent)
  • File "/usr/lib/python2.5/site-packages/orca/default.py", line 2245 in readCharAttributes
    defAttributes = text.getDefaultAttributes() COMM_FAILURE

There might be something we can do here to get it to fail more gracefully.
Comment 2 Rich Burridge 2006-09-25 20:40:22 UTC
Created attachment 73391 [details] [review]
Patch to allieviate the "sticky" problem.

There is an Orca problem here whereby if a COMM_FAILURE occured
because of a user command (such as Insert-f in this case), then
Orca gets stuck in a state where orca._orcaModifierPressed is True
and this has an adverse affect on everything that's typed afterwards.

Pressing and releasing the Insert key gets Orca out of the sticky state.

The attached patch does the same. The only concern from me (and a question
to you Will) is whether we want to do this somewhere else within the
Orca source code.
Comment 3 Rich Burridge 2006-09-26 16:18:21 UTC
I've closed out the gaim SF bug on this. The problem appears to
be in atk. I built atk and gail with debug on, and reran
gaim with Orca. I get the following stack trace.

t@1 (l@1) stopped in abort at 0xfd59003b
0xfd59003b: abort       :       pushl    %ebp
Current function is atk_text_attribute_get_value
 1131         g_assert (index >= 0 && index < 3);
(dbx) where
current thread: t@1
  [1] abort(0x804663c, 0x0, 0xfd933eb4, 0x9, 0xfd6326a0,
0x8045f0c), at 0xfd59003b
  [2] g_logv(0x0, 0x4, 0xfeeffcdc, 0x804635c), at 0xfd8d1238
  [3] g_log(0x0, 0x4, 0xfeeffcdc, 0xfef14b6c, 0x46b,
0xfef14b78), at 0xfd8d1265
=>[4] atk_text_attribute_get_value(attr =
ATK_TEXT_ATTR_WRAP_MODE, index = 3), line 1131 in
"atktext.c"
  [5] gail_misc_add_to_attr_set(attrib_set = 0x88b2cd8,
attrs = 0x88d02d0, attr = ATK_TEXT_ATTR_WRAP_MODE), line 632
in "gailmisc.c"
  [6] gail_text_view_get_default_attributes(text =
0x856e150), line 724 in "gailtextview.c"
  [7] atk_text_get_default_attributes(text = 0x856e150),
line 640 in "atktext.c"  [8]
impl_getDefaultAttributes(0x857fb64, 0x804663c), at 0xfbfcf336
  [9]
_ORBIT_skel_small_Accessibility_Text_getDefaultAttributes(0x857fb64,
0x80464d0, 0x0, 0x80464f0, 0x804663c, 0xfbfcf30c), at
0xfbfc7f52
  [10] ORBit_POAObject_invoke(0x86c5f50, 0x80464d0, 0x0,
0x80464f0, 0x8046578, 0x804663c), at 0xfbf3eb79
  [11] ORBit_OAObject_invoke(0x86c5f50, 0x80464d0, 0x0,
0x80464f0, 0x8046578, 0x804663c), at 0xfbf430a8
  [12] ORBit_small_invoke_adaptor(0x86c5f50, 0x88d01e8,
0xfbfe82d0, 0x8046578, 0x804663c), at 0xfbf3078d
  [13] ORBit_POAObject_handle_request(0x86c5f50, 0x88d0294,
0x0, 0x0, 0x0, 0x88d01e8, 0x804663c), at 0xfbf3efc0
  [14] ORBit_POAObject_invoke_incoming_request(0x86c5f50,
0x88d01e8, 0x804663c), at 0xfbf3f3d0
  [15] ORBit_POA_handle_request(0x8278880, 0x88d01e8,
0x88d0200), at 0xfbf3f865
  [16] ORBit_handle_request(0x827af08, 0x88d01e8), at
0xfbf42e70
  [17] giop_connection_handle_input(0x8640440), at 0xfbf2d97d
  [18] link_connection_io_handler(0x0, 0x1, 0x8640440), at
0xfbf491f6
  [19] link_source_dispatch(0x86bc050, 0xfbf491a0,
0x8640440), at 0xfbf4adf6
  [20] g_main_dispatch(0x8264e78), at 0xfd8c9690
  [21] g_main_context_dispatch(0x8264e78), at 0xfd8ca779
  [22] g_main_context_iterate(0x8264e78, 0x1, 0x1,
0x82488a8), at 0xfd8cab99
  [23] g_main_loop_run(0x84d9590), at 0xfd8cb19e
  [24] gtk_main(0x8046ef4, 0x8046da0, 0xfeffa840,
0xfd5e6d30, 0x0, 0x82420d4), at 0xfed113f7
  [25] main(argc = 1, argv = 0x8046de4), line 765 in
"gtkmain.c"
(dbx) print index
index = 3
(dbx) frame 5
Current function is gail_misc_add_to_attr_set
  632         value = g_strdup (atk_text_attribute_get_value
(attr, attrs->wrap_mode));
(dbx) print *attrs
*attrs = {
    refcount           = 1U
    appearance         = {
        bg_color         = {
            pixel = 16777215U
            red   = 65535U
            green = 65535U
            blue  = 65535U
        }
        fg_color         = {
            pixel = 0
            red   = 0
            green = 0
            blue  = 0
        }
        bg_stipple       = (nil)
        fg_stipple       = (nil)
        rise             = 0
        padding1         = (nil)
        underline        = 0
        strikethrough    = 0
        draw_bg          = 0
        inside_selection = 0
        is_text          = 0
        pad1             = 0
        pad2             = 0
        pad3             = 0
        pad4             = 0
    }
    justification      = GTK_JUSTIFY_LEFT
    direction          = GTK_TEXT_DIR_LTR
    font               = 0x88ce740
    font_scale         = 1.0
    left_margin        = 2
    indent             = 0
    right_margin       = 2
    pixels_above_lines = 0
    pixels_below_lines = 5
    pixels_inside_wrap = 0
    tabs               = (nil)
    wrap_mode          = GTK_WRAP_WORD_CHAR
    language           = 0x8319060
    pg_bg_color        = (nil)
    invisible          = 0
    bg_full_height     = 0
    editable           = 1U
    realized           = 0
    pad1               = 0
    pad2               = 0
    pad3               = 0
    pad4               = 0
}
(dbx) print (int) attrs->wrap_mode
(int ) attrs->wrap_mode = 3
(dbx) quit


You'll notice that attrs->wrape_mode is 3 but there is a
specific test in atktext.c at about line 1131:

    case ATK_TEXT_ATTR_WRAP_MODE:
      g_assert (index >= 0 && index < 3);

That would appear to be a problem.

I'll open up an atk bug against this.

Comment 4 Rich Burridge 2006-09-26 16:29:53 UTC
I've opened atk bug #357847 on this problem. Adjusted summary to show
that this one is blocked by that one.
Comment 5 Rich Burridge 2006-09-26 21:26:23 UTC
I've just tested this against the CVS version of atk.
Works great. Closing as FIXED.