Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

使用 oxygen-gtk2 主題時,偏好設定崩潰 #19

Open
hyslion opened this issue Jul 1, 2014 · 8 comments
Open

使用 oxygen-gtk2 主題時,偏好設定崩潰 #19

hyslion opened this issue Jul 1, 2014 · 8 comments
Labels

Comments

@hyslion
Copy link
Contributor

hyslion commented Jul 1, 2014

405dc18 這個 commit 開始,
使用 oxygen-gtk2 主題時,Preference 內的 Site Settings 分頁會使得程式崩潰。

The program 'pcmanx' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadMatch (invalid parameter attributes)'.
  (Details: serial 13294 error_code 8 request_code 62 minor_code 0)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the --sync command line
   option to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)

以下是根據提示,利用 break gdk_x_error() 讀取 backtrace 時所產生的輸出

#0  gdk_x_error (display=0x7a7e20, error=0x7fffffffc4b0) at gdkmain-x11.c:458
#1  0x00007ffff60658fd in _XError () from /usr/lib/libX11.so.6
#2  0x00007ffff6062867 in ?? () from /usr/lib/libX11.so.6
#3  0x00007ffff6062925 in ?? () from /usr/lib/libX11.so.6
#4  0x00007ffff60638d0 in _XReply () from /usr/lib/libX11.so.6
#5  0x00007ffff60498cd in XGetWindowProperty () from /usr/lib/libX11.so.6
#6  0x00007ffff75145f0 in IA__gdk_window_get_type_hint (window=0xc87360) at gdkwindow-x11.c:2117
#7  0x00007fffecffba68 in Oxygen::Gtk::gdk_window_nobackground (window=window@entry=0xc87360)
    at /home/hyslion/pkgbuild/oxygen-gtk2/src/oxygen-gtk2-1.4.5/src/oxygengtkutils.cpp:174
#8  0x00007fffed0757c0 in Oxygen::draw_flat_box (style=0xd28be0, window=0xc87360, state=13377632, shadow=GTK_SHADOW_NONE, 
    clipRect=0x7ffff7b2752c, widget=0xdaf598, detail=0x7ffff7b2752c "base", x=0, y=0, w=668, h=414)
    at /home/hyslion/pkgbuild/oxygen-gtk2/src/oxygen-gtk2-1.4.5/src/oxygenstylewrapper.cpp:153
#9  0x00007ffff7918e62 in gtk_paint_flat_box () from /usr/lib/libgtk-x11-2.0.so.0
#10 0x00007ffff79d0f1b in gtk_window_paint (widget=widget@entry=0xcc2060, area=area@entry=0x7fffffffcf84) at gtkwindow.c:6625
#11 0x00007ffff79d0f6c in gtk_window_expose (widget=0xcc2060, event=0x7fffffffcf70) at gtkwindow.c:6634
#12 0x00007ffff789184f in _gtk_marshal_BOOLEAN__BOXED (closure=0x84f140, return_value=0x7fffffffcb60, n_param_values=<optimized out>, 
    param_values=0x7fffffffcc10, invocation_hint=<optimized out>, marshal_data=0x7ffff79d0f20 <gtk_window_expose>) at gtkmarshalers.c:86
#13 0x00007ffff6ace3d8 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#14 0x00007ffff6adfb1b in ?? () from /usr/lib/libgobject-2.0.so.0
#15 0x00007ffff6ae7719 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#16 0x00007ffff6ae7d02 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#17 0x00007ffff79c4a3c in gtk_widget_event_internal (widget=0xcc2060, event=0x7fffffffcf70) at gtkwidget.c:5010
#18 0x00007ffff788ee18 in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0
#19 0x00007ffff74eb3bf in _gdk_window_process_updates_recurse (window=window@entry=0xc87360, expose_region=expose_region@entry=0xdd2f90)
    at gdkwindow.c:5443
#20 0x00007ffff7518b65 in _gdk_windowing_window_process_updates_recurse (window=window@entry=0xc87360, region=region@entry=0xdd2f90)
    at gdkwindow-x11.c:5643
#21 0x00007ffff74e7e38 in gdk_window_process_updates_internal (window=0xc87360) at gdkwindow.c:5610
#22 0x00007ffff74e8738 in IA__gdk_window_process_all_updates () at gdkwindow.c:5716
#23 0x00007ffff7812bd1 in gtk_container_idle_sizer (data=<optimized out>) at gtkcontainer.c:1360
#24 0x00007ffff74c8487 in gdk_threads_dispatch (data=0xdb0ae0) at gdk.c:512
#25 0x00007ffff67fea65 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#26 0x00007ffff67fedc8 in ?? () from /usr/lib/libglib-2.0.so.0
#27 0x00007ffff67ff08a in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#28 0x00007ffff7815c23 in IA__gtk_dialog_run (dialog=0xcc2060) at gtkdialog.c:1094
#29 0x0000000000431a5f in CDialog::ShowModal (this=0x88f030) at dialog.cpp:68
#30 0x0000000000437439 in CMainFrame::OnPreference (mitem=0x9d69c0, _this=0x883e70) at mainframe.cpp:1155
#31 0x00007ffff6ace3d8 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#32 0x00007ffff6adfd5d in ?? () from /usr/lib/libgobject-2.0.so.0
#33 0x00007ffff6ae7a49 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#34 0x00007ffff6ae7d02 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#35 0x00007ffff77d1460 in _gtk_action_emit_activate (action=0x9d69c0) at gtkaction.c:795
#36 0x00007ffff6ace3d8 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#37 0x00007ffff6adf577 in ?? () from /usr/lib/libgobject-2.0.so.0
#38 0x00007ffff6ae7a49 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#39 0x00007ffff6ae7d02 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#40 0x00007ffff79c3876 in IA__gtk_widget_activate (widget=widget@entry=0x89a530) at gtkwidget.c:5041
#41 0x00007ffff78a30bd in IA__gtk_menu_shell_activate_item (menu_shell=0x998220, menu_item=0x89a530, force_deactivate=<optimized out>)
    at gtkmenushell.c:1276
#42 0x00007ffff78a343b in gtk_menu_shell_button_release (widget=0x998220, event=<optimized out>) at gtkmenushell.c:703
#43 0x00007ffff789184f in _gtk_marshal_BOOLEAN__BOXED (closure=0x84ff70, return_value=0x7fffffffdcb0, n_param_values=<optimized out>,
    param_values=0x7fffffffdd60, invocation_hint=<optimized out>, marshal_data=0x7ffff7898c10 <gtk_menu_button_release>) at gtkmarshalers.c:86
#44 0x00007ffff6ace3d8 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#45 0x00007ffff6adfb1b in ?? () from /usr/lib/libgobject-2.0.so.0
#46 0x00007ffff6ae7719 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#47 0x00007ffff6ae7d02 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#48 0x00007ffff79c4a3c in gtk_widget_event_internal (widget=0x998220, event=0xc31990) at gtkwidget.c:5010
#49 0x00007ffff789054a in gtk_propagate_event () from /usr/lib/libgtk-x11-2.0.so.0
#50 0x00007ffff788f014 in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0
#51 0x00007ffff75037bc in gdk_event_dispatch (source=<optimized out>, callback=<optimized out>, user_data=<optimized out>)
    at gdkevents-x11.c:2403
#52 0x00007ffff67feb84 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#53 0x00007ffff67fedc8 in ?? () from /usr/lib/libglib-2.0.so.0
#54 0x00007ffff67ff08a in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#55 0x00007ffff788e59c in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#56 0x000000000042c893 in main (argc=2, argv=0x7fffffffe3b8) at pcmanx_gtk2.cpp:190

同時也能觀察到 UAO 的下拉式選單只被繪出了一半,接著就崩潰了。而將該選單移除後就不會有問題了。

site settings
site settings2

這個問題似乎只在使用 oxygen-gtk2 作為主題的時候發生,換別的主題就不會了,所以也可能是 oxygen-gtk2 的 bug。只是乍看之下 405dc18 好像沒有直接影響,沒有套用該 patch 的分支(像 master)就算用 oxygen-gtk2 也不會有問題。為什麼會產生這個錯誤呢?希望在這方面有心得的前輩可以幫忙解惑,謝謝!

@hyslion hyslion added the bug label Jul 1, 2014
@kidwm
Copy link
Member

kidwm commented Sep 11, 2014

其實我很想問 @fourdollars 為什麼我們需要兩種 UAO 版本…

我記得 Windows 版的並沒有這個設定。

@fourdollars
Copy link
Member

因為我不曉得哪一個才是標準啊...

@fourdollars
Copy link
Member

我是參考 http://moztw.org/docs/big5/ 上面的資料實作的,資料上面就是列了兩種。

@kidwm
Copy link
Member

kidwm commented Oct 27, 2014

我記得兩版差異不是非常小嗎?
是不是看看 Windows 版用的是哪個,我們設成預設值就好?

@fourdollars
Copy link
Member

提醒一下, UAO 是針對 Big5 的,但是其實 pcmanx-gtk2 並不只是只有支援 Big5 喔,要改成預設值需要考慮一下會不會影響非 Big5 的部份。

@kidwm
Copy link
Member

kidwm commented Oct 28, 2014

是啊,我指的是有開 UAO 時的預設值。
應該也只有在 big5 底下生效吧。

@kidwm
Copy link
Member

kidwm commented Apr 8, 2015

@hyslion 話說你確定在那個 commit 之前的就沒有這個問題?

@kidwm
Copy link
Member

kidwm commented Jun 9, 2015

Ref #58

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants