Bug 4414

Summary: SIGILL caused by libcairo when running gnome-terminal
Product: pixman Reporter: Sebastien Bacher <seb128>
Component: pixmanAssignee: Billy Biggs <billy.biggs>
Status: RESOLVED FIXED QA Contact: cairo-bugs mailing list <cairo-bugs>
Severity: normal    
Priority: high CC: billy.biggs, cworth, utx
Version: 0.1.3   
Hardware: x86 (IA32)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments: Proposed patch

Description Sebastien Bacher 2005-09-10 09:13:38 UTC
This bug has been opened here: http://bugzilla.ubuntu.com/show_bug.cgi?id=15091

"Overview Description:

Gnome-terminal crashes and its probably error in libcairo2 package.

Steps to reproduce:

Open gnome-terminal, Click on Edit->Current profile in main menu.

Actual results:

It crashes.

(gdb) thread apply all bt

Thread 2 (Thread -1236739152 (LWP 19944)):
#0  0xb779f231 in __read_nocancel () from /lib/tls/libpthread.so.0
#1  0xb773a2ad in g_timeout_add () from /usr/lib/libglib-2.0.so.0
#2  0xb7754844 in g_static_private_free () from /usr/lib/libglib-2.0.so.0
#3  0xb779a1ee in start_thread () from /lib/tls/libpthread.so.0
#4  0xb76af03e in clone () from /lib/tls/libc.so.6

Thread 1 (Thread -1225021760 (LWP 19930)):
#0  0xb757d254 in _cairo_pixman_have_mmx () from /usr/lib/libcairo.so.2
#1  0xb757d2ee in _cairo_pixman_compose_setup_mmx () from /usr/lib/libcairo.so.2
#2  0xb756be0f in _cairo_pixman_region_intersect () from /usr/lib/libcairo.so.2
#3  0xb75519ea in cairo_image_surface_get_height () from /usr/lib/libcairo.so.2
#4  0xb75566f9 in cairo_surface_set_device_offset () from /usr/lib/libcairo.so.2
#5  0xb75604fb in cairo_ft_scaled_font_lock_face () from /usr/lib/libcairo.so.2
#6  0xb754d55a in cairo_scaled_font_glyph_extents () from /usr/lib/libcairo.so.2
#7  0xb754b5b4 in cairo_status_to_string () from /usr/lib/libcairo.so.2
#8  0xb755e54f in cairo_ft_scaled_font_unlock_face () from /usr/lib/libcairo.so.2
#9  0xb754cdb3 in cairo_scaled_font_destroy () from /usr/lib/libcairo.so.2
#10 0xb754d2fc in cairo_scaled_font_glyph_extents () from /usr/lib/libcairo.so.2
#11 0xb75e3eba in pango_cairo_fc_font_get_type () from
/usr/lib/libpangocairo-1.0.so.0
#12 0xb78fffb5 in pango_font_get_glyph_extents () from /usr/lib/libpango-1.0.so.0
#13 0xb6559cc0 in ?? () from /usr/lib/pango/1.4.0/modules/pango-basic-fc.so
#14 0x0839fc90 in ?? ()
#15 0x000001e3 in ?? ()
#16 0x00000000 in ?? ()
#17 0xbff1470c in ?? ()
#18 0x084e8780 in ?? ()
#19 0x00000000 in ?? ()
#20 0x084e7d88 in ?? ()
#21 0xb7349bca in pango_fc_font_lock_face () from /usr/lib/libpangoft2-1.0.so.0
#22 0xb6559e6c in ?? () from /usr/lib/pango/1.4.0/modules/pango-basic-fc.so
#23 0x00000000 in ?? ()
#24 0x000001e3 in ?? ()
#25 0xb77037ef in in6addr_any () from /lib/tls/libc.so.6
#26 0xb7904bd7 in pango_context_get_base_dir () from /usr/lib/libpango-1.0.so.0
---Type <return> to continue, or q <return> to quit---
#27 0xb7906bc7 in pango_engine_shape_get_type () from /usr/lib/libpango-1.0.so.0
#28 0xb79159d9 in pango_shape () from /usr/lib/libpango-1.0.so.0
#29 0xb790a3c4 in pango_layout_set_width () from /usr/lib/libpango-1.0.so.0
#30 0xb790c6fb in pango_layout_iter_get_char_extents () from
/usr/lib/libpango-1.0.so.0
#31 0xb790cf58 in pango_layout_iter_get_char_extents () from
/usr/lib/libpango-1.0.so.0
#32 0xb790d887 in pango_layout_iter_get_char_extents () from
/usr/lib/libpango-1.0.so.0
#33 0xb7ba8b97 in gtk_label_get_use_underline () from /usr/lib/libgtk-x11-2.0.so.0
#34 0xb77de315 in g_cclosure_marshal_VOID__BOXED () from
/usr/lib/libgobject-2.0.so.0
#35 0xb77d1d75 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#36 0xb77d23a8 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#37 0xb77e0769 in g_signal_stop_emission () from /usr/lib/libgobject-2.0.so.0
#38 0xb77e2150 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#39 0xb77e54f0 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#40 0xb7bff9fd in gtk_size_group_remove_widget () from /usr/lib/libgtk-x11-2.0.so.0
#41 0xb7bffd99 in _gtk_size_group_compute_requisition () from
/usr/lib/libgtk-x11-2.0.so.0
#42 0xb7c987d8 in gtk_widget_size_request () from /usr/lib/libgtk-x11-2.0.so.0
#43 0xb7b7d4eb in gtk_hbox_new () from /usr/lib/libgtk-x11-2.0.so.0
#44 0xb77de315 in g_cclosure_marshal_VOID__BOXED () from
/usr/lib/libgobject-2.0.so.0
#45 0xb77d1d75 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#46 0xb77d23a8 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#47 0xb77e0769 in g_signal_stop_emission () from /usr/lib/libgobject-2.0.so.0
#48 0xb77e2150 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#49 0xb77e54f0 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#50 0xb7bff9fd in gtk_size_group_remove_widget () from /usr/lib/libgtk-x11-2.0.so.0
#51 0xb7bffd99 in _gtk_size_group_compute_requisition () from
/usr/lib/libgtk-x11-2.0.so.0
#52 0xb7c987d8 in gtk_widget_size_request () from /usr/lib/libgtk-x11-2.0.so.0
#53 0xb7af6a14 in gtk_button_set_relief () from /usr/lib/libgtk-x11-2.0.so.0
#54 0xb77de315 in g_cclosure_marshal_VOID__BOXED () from
/usr/lib/libgobject-2.0.so.0
#55 0xb77d1d75 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#56 0xb77d23a8 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#57 0xb77e0769 in g_signal_stop_emission () from /usr/lib/libgobject-2.0.so.0
#58 0xb77e2150 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#59 0xb77e54f0 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#60 0xb7bff9fd in gtk_size_group_remove_widget () from /usr/lib/libgtk-x11-2.0.so.0
#61 0xb7bffd99 in _gtk_size_group_compute_requisition () from
/usr/lib/libgtk-x11-2.0.so.0
#62 0xb7c987d8 in gtk_widget_size_request () from /usr/lib/libgtk-x11-2.0.so.0
---Type <return> to continue, or q <return> to quit---
#63 0xb7b7d4eb in gtk_hbox_new () from /usr/lib/libgtk-x11-2.0.so.0
#64 0xb77de315 in g_cclosure_marshal_VOID__BOXED () from
/usr/lib/libgobject-2.0.so.0
#65 0xb77d1d75 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#66 0xb77d23a8 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#67 0xb77e0769 in g_signal_stop_emission () from /usr/lib/libgobject-2.0.so.0
#68 0xb77e2150 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#69 0xb77e54f0 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#70 0xb7bff9fd in gtk_size_group_remove_widget () from /usr/lib/libgtk-x11-2.0.so.0
#71 0xb7bffd99 in _gtk_size_group_compute_requisition () from
/usr/lib/libgtk-x11-2.0.so.0
#72 0xb7c987d8 in gtk_widget_size_request () from /usr/lib/libgtk-x11-2.0.so.0
#73 0xb7c94a2f in gtk_vbox_new () from /usr/lib/libgtk-x11-2.0.so.0
#74 0xb77de315 in g_cclosure_marshal_VOID__BOXED () from
/usr/lib/libgobject-2.0.so.0
#75 0xb77d1d75 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#76 0xb77d23a8 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#77 0xb77e0769 in g_signal_stop_emission () from /usr/lib/libgobject-2.0.so.0
#78 0xb77e2150 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#79 0xb77e54f0 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#80 0xb7bff9fd in gtk_size_group_remove_widget () from /usr/lib/libgtk-x11-2.0.so.0
#81 0xb7bffd99 in _gtk_size_group_compute_requisition () from
/usr/lib/libgtk-x11-2.0.so.0
#82 0xb7c987d8 in gtk_widget_size_request () from /usr/lib/libgtk-x11-2.0.so.0
#83 0xb7b79cef in gtk_frame_get_shadow_type () from /usr/lib/libgtk-x11-2.0.so.0
#84 0xb77de315 in g_cclosure_marshal_VOID__BOXED () from
/usr/lib/libgobject-2.0.so.0
#85 0xb77d1d75 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#86 0xb77d23a8 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#87 0xb77e0769 in g_signal_stop_emission () from /usr/lib/libgobject-2.0.so.0
#88 0xb77e2150 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#89 0xb77e54f0 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#90 0xb7bff9fd in gtk_size_group_remove_widget () from /usr/lib/libgtk-x11-2.0.so.0
#91 0xb7bffd99 in _gtk_size_group_compute_requisition () from
/usr/lib/libgtk-x11-2.0.so.0
#92 0xb7c987d8 in gtk_widget_size_request () from /usr/lib/libgtk-x11-2.0.so.0
#93 0xb7bd0c02 in gtk_notebook_next_page () from /usr/lib/libgtk-x11-2.0.so.0
#94 0xb77de315 in g_cclosure_marshal_VOID__BOXED () from
/usr/lib/libgobject-2.0.so.0
#95 0xb77d1d75 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#96 0xb77d23a8 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#97 0xb77e0769 in g_signal_stop_emission () from /usr/lib/libgobject-2.0.so.0
#98 0xb77e2150 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
---Type <return> to continue, or q <return> to quit---
#99 0xb77e54f0 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#100 0xb7bff9fd in gtk_size_group_remove_widget () from /usr/lib/libgtk-x11-2.0.so.0
#101 0xb7bffd99 in _gtk_size_group_compute_requisition () from
/usr/lib/libgtk-x11-2.0.so.0
#102 0xb7c987d8 in gtk_widget_size_request () from /usr/lib/libgtk-x11-2.0.so.0
#103 0xb7c94a2f in gtk_vbox_new () from /usr/lib/libgtk-x11-2.0.so.0
#104 0xb77de315 in g_cclosure_marshal_VOID__BOXED () from
/usr/lib/libgobject-2.0.so.0
#105 0xb77d1d75 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#106 0xb77d23a8 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#107 0xb77e0769 in g_signal_stop_emission () from /usr/lib/libgobject-2.0.so.0
#108 0xb77e2150 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#109 0xb77e54f0 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#110 0xb7bff9fd in gtk_size_group_remove_widget () from /usr/lib/libgtk-x11-2.0.so.0
#111 0xb7bffd99 in _gtk_size_group_compute_requisition () from
/usr/lib/libgtk-x11-2.0.so.0
#112 0xb7c987d8 in gtk_widget_size_request () from /usr/lib/libgtk-x11-2.0.so.0
#113 0xb7ca8a7b in gtk_window_reshow_with_initial_size () from
/usr/lib/libgtk-x11-2.0.so.0
#114 0xb77de315 in g_cclosure_marshal_VOID__BOXED () from
/usr/lib/libgobject-2.0.so.0
#115 0xb77d1d75 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#116 0xb77d23a8 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#117 0xb77e0769 in g_signal_stop_emission () from /usr/lib/libgobject-2.0.so.0
#118 0xb77e2150 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#119 0xb77e54f0 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#120 0xb7bff9fd in gtk_size_group_remove_widget () from /usr/lib/libgtk-x11-2.0.so.0
#121 0xb7bffd99 in _gtk_size_group_compute_requisition () from
/usr/lib/libgtk-x11-2.0.so.0
#122 0xb7c987d8 in gtk_widget_size_request () from /usr/lib/libgtk-x11-2.0.so.0
#123 0xb7ca9beb in _gtk_window_constrain_size () from /usr/lib/libgtk-x11-2.0.so.0
#124 0xb7caaafa in gtk_window_get_position () from /usr/lib/libgtk-x11-2.0.so.0
#125 0xb77ddab3 in g_cclosure_marshal_VOID__VOID () from
/usr/lib/libgobject-2.0.so.0
#126 0xb77d1d75 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#127 0xb77d23a8 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#128 0xb77e0769 in g_signal_stop_emission () from /usr/lib/libgobject-2.0.so.0
#129 0xb77e2150 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#130 0xb77e24c3 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#131 0xb7c9f786 in gtk_widget_show () from /usr/lib/libgtk-x11-2.0.so.0
#132 0xb7cab348 in gtk_window_present_with_time () from /usr/lib/libgtk-x11-2.0.so.0
#133 0xb7cab3b1 in gtk_window_present () from /usr/lib/libgtk-x11-2.0.so.0
#134 0x0805a3cf in ?? ()
---Type <return> to continue, or q <return> to quit---
#135 0x08469728 in ?? ()
#136 0x080ffe68 in ?? ()
#137 0x08058e90 in ?? ()
#138 0x081150a0 in ?? ()
#139 0x00000000 in ?? ()
#140 0x00000000 in ?? ()
#141 0xbff18118 in ?? ()
#142 0xb77e24c3 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#143 0x08072fd4 in ?? ()
#144 0x081150a0 in ?? ()
#145 0x081313a8 in ?? ()
#146 0x081313a8 in ?? ()
#147 0xb77d1744 in g_closure_ref () from /usr/lib/libgobject-2.0.so.0
#148 0xb77ddab3 in g_cclosure_marshal_VOID__VOID () from
/usr/lib/libgobject-2.0.so.0
#149 0xb77d23a8 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#150 0xb77e0b13 in g_signal_stop_emission () from /usr/lib/libgobject-2.0.so.0
#151 0xb77e2150 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#152 0xb77e24c3 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#153 0xb7c996ad in gtk_widget_activate () from /usr/lib/libgtk-x11-2.0.so.0
#154 0xb7bc6409 in gtk_menu_shell_activate_item () from /usr/lib/libgtk-x11-2.0.so.0
#155 0xb7bc66dd in gtk_menu_shell_activate_item () from /usr/lib/libgtk-x11-2.0.so.0
#156 0xb7bbce0e in gtk_menu_reorder_child () from /usr/lib/libgtk-x11-2.0.so.0
#157 0xb7bb77cc in _gtk_marshal_BOOLEAN__BOXED () from /usr/lib/libgtk-x11-2.0.so.0
#158 0xb77d1d75 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#159 0xb77d23a8 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#160 0xb77e0c9f in g_signal_stop_emission () from /usr/lib/libgobject-2.0.so.0
#161 0xb77e1ec3 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#162 0xb77e24c3 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#163 0xb7c9988f in gtk_widget_activate () from /usr/lib/libgtk-x11-2.0.so.0
#164 0xb7bb5f08 in gtk_propagate_event () from /usr/lib/libgtk-x11-2.0.so.0
#165 0xb7bb6340 in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0
#166 0xb7a59b1d in _gdk_events_queue () from /usr/lib/libgdk-x11-2.0.so.0
#167 0xb773848e in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#168 0xb773b496 in g_main_context_check () from /usr/lib/libglib-2.0.so.0
#169 0xb773b783 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#170 0xb7bb5606 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
---Type <return> to continue, or q <return> to quit---
#171 0x08061567 in ?? ()
#172 0x080c6228 in ?? ()
#173 0x0807daea in ?? ()
#174 0x0805e3c8 in ?? ()
#175 0x00000000 in ?? ()
#176 0x00000000 in ?? ()
#177 0x00000000 in ?? ()
#178 0x08083120 in ?? ()
#179 0x0807da4b in ?? ()
#180 0x0807da46 in ?? ()
#181 0x0807da37 in ?? ()
#182 0x0807da32 in ?? ()
#183 0x0807da26 in ?? ()
#184 0x0807da1b in ?? ()
#185 0x0807da10 in ?? ()
#186 0x0807da07 in ?? ()
#187 0x00000000 in ?? ()
#188 0x00000000 in ?? ()
#189 0x00000794 in ?? ()
#190 0xb75f6b4e in ?? () from /lib/tls/libc.so.6
#191 0xb75f19fc in ?? () from /lib/tls/libc.so.6
#192 0xb75e932c in ?? () from /lib/tls/libc.so.6
#193 0x080a64d8 in ?? ()
#194 0x00000027 in ?? ()
#195 0xb6fd2598 in ?? ()
#196 0x0000001c in ?? ()
#197 0x00000051 in ?? ()
#198 0x00000000 in ?? ()
#199 0x080b4918 in ?? ()
#200 0x03c00003 in ?? ()
#201 0x00000027 in ?? ()
#202 0x019a4462 in ?? ()
#203 0x00000000 in ?? ()
#204 0x00000000 in ?? ()
#205 0x00000000 in ?? ()
#206 0x00000000 in ?? ()
---Type <return> to continue, or q <return> to quit---
#207 0x00000000 in ?? ()
#208 0x00000000 in ?? ()
#209 0x00000000 in ?? ()
#210 0x00000000 in ?? ()
#211 0x00000000 in ?? ()
#212 0x00000000 in ?? ()
#213 0x00000000 in ?? ()
#214 0x00000000 in ?? ()
#215 0x00000000 in ?? ()
#216 0x00000000 in ?? ()
#217 0x00000000 in ?? ()
#218 0x00000000 in ?? ()
#219 0x00000000 in ?? ()
#220 0x00000000 in ?? ()
#221 0x00000000 in ?? ()
#222 0x00000000 in ?? ()
#223 0x00000000 in ?? ()
#224 0x00000000 in ?? ()
#225 0x0177ff8e in ?? ()
#226 0xbff18e50 in ?? ()
#227 0xb7f04000 in ?? ()
#228 0x08050ec5 in ?? ()
#229 0x00000000 in ?? ()
#230 0x00420000 in ?? ()
#231 0xb7647ace in _IO_str_pbackfail () from /lib/tls/libc.so.6
#232 0xb75faeb4 in __libc_start_main () from /lib/tls/libc.so.6
#233 0x08056fe1 in ?? ()"
Comment 1 Billy Biggs 2005-09-10 12:33:33 UTC
What's the output of /proc/cpuinfo?
Comment 2 Billy Biggs 2005-09-10 15:23:58 UTC
The upstream user has an AMD-K6 which supports MMX/3DNow but not SSE.
The problem is that using -msse causes gcc to generate SSE instructions in
the CPU detection routine (fbHasMMX).

The gcc documentation is rather misleading on this point.  The current
documentation states that these options (-mmmx, -msse) enable use of
the compiler built-ins, and not that it allows gcc to generate MMX/SSE code.
I have filed this bug upstream with gcc:

  http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23809

Unfortunately, the fix is not as simple as removing the -msse.  We need
to isolate the MMX/SSE code in a separate file from the runtime detection
code if we intend to keep using the compiler intrinsics.  Paul Brook on #gcc
confirmed the bad news.
Comment 3 Billy Biggs 2005-09-10 15:27:19 UTC
Looks like this came up before, with a patch, and I guess it didn't make
it (or made it into Xorg but not xserver/pixman?).

  http://lists.freedesktop.org/pipermail/xorg/2005-July/008782.html
Comment 4 Sebastien Bacher 2005-09-15 12:53:39 UTC
do you have a fix for this bug? I would like to get cairo fixed for Ubuntu
before the 5.10 version
Comment 5 Billy Biggs 2005-09-15 13:01:19 UTC
I'll try and put together a final patch tonight.
Comment 6 Billy Biggs 2005-09-15 21:07:33 UTC
Created attachment 3291 [details] [review]
Proposed patch

Here's what I intend to commit.  otaylor and cworth, OK for 1.0.2?

There's actually one other issue not addressed by this patch.  The MMX code is
currently being compiled with both -mmmx and -msse.  The detection code seems
to only check for MMX, not full SSE, so I think this is a problem.  I see three
possible solutions:

   1. Change the detection code to check for SSE, giving up on pre-SSE chips,
      and turn on the USE_SSE define in fbmmx.c.
   2. Compile fbmmx.c twice, once for MMX and once for SSE.
   3. Modify cairo's configure.in to drop -msse

For 1.0.2 I think the only option is 3, as the other two are more risky and I'd
hate to cause new SIGILLs, but I'm confused about why -msse was in there at
all.  Maybe for futureproofing the USE_SSE code?  The current code seems to
compile fine without it.  Am I missing something?
Comment 7 Owen Taylor 2005-09-16 06:02:51 UTC
Looks fine for me, assuming the obvious Makefile.am changes.
Comment 8 Billy Biggs 2005-09-16 07:13:59 UTC
The Makefile.am already only applies the MMX flags to the fbmmx.*
code.  Was this what you meant?
Comment 9 Owen Taylor 2005-09-16 07:17:43 UTC
Oh, for some reason I thought your patch moved stuff into a new file
rather than into fbpict.c, so would have required Makefile.am changes.
Moving it into fbpict.c should be OK. 
Comment 10 Owen Taylor 2005-09-16 07:18:27 UTC
Fixing accidental reassignment.
Comment 11 Carl Worth 2005-09-16 10:41:36 UTC
Looks fine to me, (just having read it, not tested).

I assume you've tested, so please commit.
Comment 12 Billy Biggs 2005-09-18 19:58:09 UTC
I tested as well as I could, I don't have access to a non-SSE supporting CPU.

Fix committed to both the 1.0 branch and HEAD.
Comment 13 Billy Biggs 2005-09-18 21:03:31 UTC
Fix applied to xserver/fb (but it doesn't really help yet, see bug 4501).
Comment 14 Billy Biggs 2005-12-31 09:52:32 UTC
*** Bug 5465 has been marked as a duplicate of this bug. ***

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.