Bug 2810 - Linking cairo/gtk/gdk to libpng15 causes issues with LSB compliant and 3rd party apps
Summary: Linking cairo/gtk/gdk to libpng15 causes issues with LSB compliant and 3rd pa...
Status: RESOLVED WONTFIX
Alias: None
Product: Mageia
Classification: Unclassified
Component: RPM Packages (show other bugs)
Version: Cauldron
Hardware: i586 Linux
Priority: Normal normal
Target Milestone: ---
Assignee: Funda Wang
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on: 2822
Blocks:
  Show dependency treegraph
 
Reported: 2011-09-22 16:47 CEST by Stew Benedict
Modified: 2012-03-14 12:07 CET (History)
3 users (show)

See Also:
Source RPM: gdk-pixbuf2.0
CVE:
Status comment:


Attachments

Description Stew Benedict 2011-09-22 16:47:59 CEST
Description of problem:

Since the move to linking everything with libpng15, I'm getting a lot of failures in LSB testing, for many of the desktop tests (cairo, gdk-pixbuf, gtkvts). The problem is the app (test) is built linked to libpng12, but also to the higher level cairo etc, which is linked to libpng15 on the system. When the application (test) tries to run, it either crashes or you get messages of the type:

Fatal error in PNG image file: Incompatible libpng version in application and library.

This worked on systems using png14, but no longer.
Cooker has the same issue. The other leading edge distributions haven't moved to libpng15 yet that I've noticed in my testing.

Even if LSB were to move to deprecate libpng12, it will take some time (years) before it was completely dropped. I've looked at the test builds in question and I'm not readily seeing how to link only to the higher level library and not libpng12 directly. If this was possible, that is something I could do with the LSB tests, but then we'd need to educate any 3rd party apps/ISVs to do the same. As thing stand now, an app that's technically compliant can fail to run, or run poorly on cauldron.

For a non-LSB example, install google-chrome from upstream:

http://dl.google.com/linux/chrome/rpm/stable/i386/google-chrome-stable-14.0.835.186-101821.i386.rpm

Here I get corruption of the upper tab and window controls (under xfce). Like the LSB tests, the binary shows linkage to both libpng12 (probably directly) and libpng15 (via gtk and friends).

 [stew@cauldron-32 ~]$ ldd /opt/google/chrome/chrome | grep png
	libpng12.so.0 => /usr/lib/libpng12.so.0 (0xb39a9000)
	libpng15.so.15 => /usr/lib/libpng15.so.15 (0xb325c000)
Manuel Hiebel 2011-09-22 16:56:12 CEST

CC: (none) => fundawang

Stew Benedict 2011-09-22 17:08:19 CEST

CC: (none) => stewb

Comment 1 Funda Wang 2011-09-23 03:14:28 CEST
The problem comes from gdk_pixbuf.

As a resolution, I'll introduce gdk_pixbuf-lsb for lsb compatibility packages, but runtime only.

Status: NEW => ASSIGNED
Assignee: bugsquad => fundawang
Source RPM: libpng-1.5.4-1.mga2.src.rpm => gdk-pixbuf2.0

Comment 2 Funda Wang 2011-09-23 05:04:24 CEST
Please install newer lsb to test, especially to test if it works with libgdk_pixbuf2.0_0-loaders-png12 and libgdk_pixbuf2.0_0-loaders-png15 both installed. If not, please try to remove png15 flavour.
Comment 3 Stew Benedict 2011-09-23 14:58:09 CEST
Definite improvement with just libgdk_pixbuf2.0_0-loaders-png12 installed, back down to just a few familiar failures for desktop/gtkvts and desktop-t2c. Desktop/cairo is the same. Adding back in libgdk_pixbuf2.0_0-loaders-png15-2.24.0-5.mga2.i586.rpm, things revert back to 37 failures for desktop-test and 65 for desktop-t2c, roughly the same as before the change. I was able to do builds of desktop/gtkvts and desktop-t2c without linking in libpng12 as they don't use png functions directly, and this yielded a similar improvement. Cairo still remains a problem. Since my test results page is still MIA with the LF systems offline, here is the output of the failing cairo tests:

composite-integer-translate-source-image 4 	failed 	
Message from the test:

Error: Function under test left cairo status in an error state: NULL pointer


composite-integer-translate-source-xlib 5 	failed 	
Message from the test:

Error: Function under test left cairo status in an error state: NULL pointer

create-from-png-image 8 	failed 	
Message from the test:

Error: Function under test failed

create-from-png-xlib 9 	failed 	
Message from the test:

Error: Function under test failed

Comment:

create-from-png-stream-image 10 	failed 	
Message from the test:

Error: Function under test left cairo status in an error state: out of memory


create-from-png-stream-xlib 11 	failed 	
Message from the test:

Error: Function under test left cairo status in an error state: out of memory
Comment 4 Funda Wang 2011-09-23 15:19:22 CEST
For cairo problems, please open another bug report, thanks. Because there are already two flavors of cairo now, and we might wait cairo 1.12 to merge those packages. Later on we could set png 1.2 flavor of cairo.

And, post the errors of gdk-pixbuf here, with only loaders-png12 installed.
Comment 5 Stew Benedict 2011-09-23 15:46:44 CEST
Thanks.

Google-chrome also appears normal with just the libgdk_pixbuf2.0_0-loaders-png12 installed. Still looks poor with both flavors installed.

I'll move cairo to another bug.

The remaining errors with desktop/gtkvts and desktop-t2c don't look to be directly related to the libpng uplift. I've been seeing them for a while on most leading edge distributions and they appear to be upstream changes. I have identified in our (LF) bugzilla and our problem_db, but can't access anything with most of the LF infrastructure offline. That said, here they are:

desktop/gtkvts:

/tests/functions/GtkTreeSortable/GtkTreeSortable 15 	failed 	Known Problem
Message from the test:

test case: /opt/lsb/test/desktop/gtkvts/tet_tmp_dir/23610aa/tests/functions/GtkTreeSortable/GtkTreeSortable, TP number: 15 
GtkTreeSortable.c, line 1106: 
1: converted_path_str = '2:3', should be '0:3'
GtkTreeSortable.c, line 1122: 
2: converted_path_str = '2:1', should be '4:1'
GtkTreeSortable.c, line 1139: 
3: converted_path_str = '0:0', should be '3:0'
GtkTreeSortable.c, line 1155: 
4: converted_path_str = '4:4', should be '1:4'

Problem info:

This is appearing on some distributions using gtk2-2.24.4. The issue is still under investigation.
bug 3238

/tests/functions/GtkTreeSortable/GtkTreeSortable 16 	failed 	Known Problem
Message from the test:

test case: /opt/lsb/test/desktop/gtkvts/tet_tmp_dir/23610aa/tests/functions/GtkTreeSortable/GtkTreeSortable, TP number: 16 
GtkTreeSortable.c, line 1280: 
1: converted_path_str = '1:2', should be '2:2'
GtkTreeSortable.c, line 1296: 
2: converted_path_str = '3:2', should be '2:2'
GtkTreeSortable.c, line 1313: 
3: converted_path_str = '2:1', should be '0:1'
GtkTreeSortable.c, line 1329: 
4: converted_path_str = '2:3', should be '4:3'

Problem info:

This is appearing on some distributions using gtk2-2.24.4. The issue is still under investigation.
bug 3238

/tests/functions/GtkTreeSortable/GtkTreeSortable 17 	failed 	Known Problem
Message from the test:

test case: /opt/lsb/test/desktop/gtkvts/tet_tmp_dir/23610aa/tests/functions/GtkTreeSortable/GtkTreeSortable, TP number: 17 
GtkTreeSortable.c, line 1454: 
1: converted_path_str = '3:4', should be '4:1'
GtkTreeSortable.c, line 1470: 
2: converted_path_str = '1:0', should be '0:3'
GtkTreeSortable.c, line 1487: 
3: converted_path_str = '4:4', should be '1:3'
GtkTreeSortable.c, line 1503: 
4: converted_path_str = '0:0', should be '3:1'

Problem info:

This is appearing on some distributions using gtk2-2.24.4. The issue is still under investigation.
bug 3238

/tests/functions/GtkTreeSortable/GtkTreeSortable 18 	failed 	Known Problem
Message from the test:

test case: /opt/lsb/test/desktop/gtkvts/tet_tmp_dir/23610aa/tests/functions/GtkTreeSortable/GtkTreeSortable, TP number: 18 
GtkTreeSortable.c, line 1628: 
1: converted_path_str = '2:0', should be '0:4'
GtkTreeSortable.c, line 1644: 
2: converted_path_str = '2:4', should be '4:0'
GtkTreeSortable.c, line 1661: 
3: converted_path_str = '0:2', should be '3:4'
GtkTreeSortable.c, line 1677: 
4: converted_path_str = '4:2', should be '1:0'

Problem info:

This is appearing on some distributions using gtk2-2.24.4. The issue is still under investigation.
bug 3238

/tests/functions/GtkTreeView/GtkTreeView 110 	failed 	
Message from the test:

test case: /opt/lsb/test/desktop/gtkvts/tet_tmp_dir/23610aa/tests/functions/GtkTreeView/GtkTreeView, TP number: 110 
GtkTreeView.c, line 9314: 

rect = (0, 0, 179, 79)
GtkTreeView.c, line 9315: 

geom = (2, 2, 179, 79)

/tests/functions/GtkTreeView/GtkTreeView 111 	failed 	
Message from the test:

test case: /opt/lsb/test/desktop/gtkvts/tet_tmp_dir/23610aa/tests/functions/GtkTreeView/GtkTreeView, TP number: 111 
GtkTreeView.c, line 9419: 

rect = (0, 0, 1979, 979)
GtkTreeView.c, line 9420: 

geom = (2, 2, 1979, 979)

/tests/functions/Selections/Selections 33 	failed 	Known Problem
Message from the test:

test case: /opt/lsb/test/desktop/gtkvts/tet_tmp_dir/23610aa/tests/functions/Selections/Selections, TP number: 33 
Selections.c, line 2054: 
global_iter = 0, should be 1

Problem info:

This failure is thought to appear with certain versions of GTK, and may also be driven by locale settings. Final resolution of the issue is still under investigation.
bug 2849

/tests/functions/Selections/Selections 34

test case: /opt/lsb/test/desktop/gtkvts/tet_tmp_dir/23610aa/tests/functions/Selections/Selections, TP number: 34 
Selections.c, line 2120: 
global_iter = 0, should be 1

Problem info:

This failure is thought to appear with certain versions of GTK, and may also be driven by locale settings. Final resolution of the issue is still under investigation.
bug 2849

desktop-t2c:

/atk-t2c/tests/AtkObject_relation/AtkObject_relation 2 	failed 	Known Problem
Message from the test:

Target interface(s):
 atk_object_add_relationship
--------
Checked requirement: {app.atk_object_add_relationship.03}
Checked requirement: {app.atk_object_add_relationship.04}
Checked requirement: {app.atk_object_add_relationship.05}
Checked requirement: {atk_object_add_relationship.02}
Checked requirement: {atk_object_add_relationship.01}
Checked requirement: {atk_object_add_relationship.02}
Checked requirement: {app.atk_object_add_relationship.04}
Checked requirement: {app.atk_object_add_relationship.05}
Checked requirement: {atk_object_add_relationship.02}
Checked requirement: {atk_object_add_relationship.01}
Checked requirement: {atk_object_add_relationship.02}
Checked requirement: {app.atk_object_add_relationship.04}
Checked requirement: {app.atk_object_add_relationship.05}
Checked requirement: {atk_object_add_relationship.02}
When there are no such relationship in the object relationset, function should add relationship.
 
Requirement failed:
{atk_object_add_relationship.02}
Returns TRUE if the relationship is added. 
 
Problem info:

This problem is still under investigation.
bug 3189

/atk-t2c/tests/AtkObject_relation/AtkObject_relation 5 	unresolved 	Known Problem
Message from the test:

Target interface(s):
 atk_object_remove_relationship
--------
Cannot add relationship to the object.
Error: Smth wrong in test purpose.

Problem info:

This issue is still under investigation.
bug 3189
/atk-t2c/tests/AtkObject_relation/AtkObject_relation 6 	unresolved 	Known Problem
Message from the test:

Target interface(s):
 atk_object_remove_relationship
--------
Cannot add relationship to the object.
Error: Smth wrong in test purpose.

Problem info:

This issue is still under investigation.
bug 3189

/fontconfig-t2c/tests/FcConfig/FcConfig 26 	failed 	Known Problem
Message from the test:

Target interface(s):
 FcFontMatch
--------
Checked requirement: {FcFontMatch.01}
Checked requirement: {FcFontMatch.01}
The function didn't return the most close matching font
 
Requirement failed:
{FcFontMatch.01}
Returns the font in config most close matching p 
 

Problem info:

This issue appears to be unique to Mandriva (and now Mageia). A bug has been filed upstream. The issue is still under investigation.
bug 2854
upstream bug

/freetype-t2c/tests/truetype_tables/truetype_tables 2 	failed 	Known Problem
Message from the test:

Target interface(s):
 FT_Get_Sfnt_Table
--------
Checked requirement: {FT_Get_Sfnt_Table.02}
This function is expected to return a pointer to given TT_MaxProfile table, but it is NOT.
 
Requirement failed:
{FT_Get_Sfnt_Table.02}
Returns a pointer to a given SFNT table within a face. 
 

Problem info:

This issue is still under investigation.
bug 3153

/gobject-t2c/tests/gobject_value_arrays/gobject_value_arrays 24 	failed 	
Message from the test:

Target interface(s):
 g_value_array_sort_with_data
--------
Checked requirement: {g_value_array_sort_with_data.06}
After sorting array, the 0-th element of array should be 1, but is 2
After sorting array, the 1-th element of array should be 2, but is 1
After sorting array, the 2-th element of array should be 3, but is 5
After sorting array, the 4-th element of array should be 5, but is 3
 
At least one of the following requirements failed:
 
{g_value_array_sort_with_data.01}
Sort value_array using compare_func to compare the elements accoring to the semantics of GCompareDataFunc. 
 
{g_value_array_append.01}
Insert a copy of value 
 
{g_value_array_get_nth.01}
Return a pointer to the value at index_ containd in value_array. 
 
/gobject-t2c/tests/gobject_gtype_instance/gobject_gtype_instance 39 	failed 	Known Problem
Message from the test:

Target interface(s):
 g_type_add_class_cache_func
--------
Checked requirement: {g_type_add_class_cache_func.03}
g_type_add_class_cache_func: all classes were not routed through the same GTypeClassCacheFunc chain.
 
Requirement failed:
{g_type_add_class_cache_func.04}
The functions have to check the class id passed in to figure whether they actually want to cache the class of this type. 
 
Problem info:

This issue is still under investigation
bug 3184
Funda Wang 2011-09-24 18:30:01 CEST

Depends on: (none) => 2822

Comment 6 Funda Wang 2011-09-27 08:18:57 CEST
Would libgdk_pixbuf2.0_0-loaders-png12-2.24.0-6.mga2 work as expected?
Comment 7 Stew Benedict 2011-09-27 19:35:17 CEST
Not as well as the earlier iteration. Rather than paste the whole mess here. I'll just publish the test run:

http://stewbenedict.org/lsb-results/mageia/x86-cauldron-32.e-artisan.org-2011-09-27-11h-09m-52s/report.htm

There are a few that look pixbuf related.
Comment 8 Manuel Hiebel 2011-11-10 14:24:12 CET
Bug 2822 is resolved, same for this one ?
Comment 9 Stew Benedict 2011-11-11 20:54:51 CET
Not really, but you can close LSB* stuff if you want. Doesn't seem to be much interest in compliance or support of 3rd party apps.
Comment 10 Juergen Harms 2012-02-22 22:18:06 CET
I have a similar problem with the pcb package: the executable throws error messages similar to what is quoted in the bug report:

Gtk-WARNING **: Error loading icon: Failed to load image '/usr/share/icons/oxygen/22x22/actions/edit-clear.png': Fatal error in PNG image file: Incompatible libpng version in application and library

dito for 16x16/actions/window-close.png

Otherwise, the package executes without problems.

Do I file a bug report against pcb (I am its maintainer) and make it depend on #2810? Sounds somewhat ridiculous, but may be helpful in case a user hits this problem and does a search in bugzilla.

CC: (none) => juergen.harms

Comment 11 Stew Benedict 2012-02-22 22:27:04 CET
Is pcb being built against libpng12? From what I can tell so far, looking at our tests, the answer is "never link against libpng12 and any higher level graphics lib that uses libpng15". For our tests (LSB), that's not currently possible to do and still build the test as LSB compliant.
Comment 12 Juergen Harms 2012-02-23 14:46:09 CET
No, pcb is not installed against libpng12 (and it uses gtk2 and includes libpng15). I have now repeated a local build to have another close look the output of the build. Weird, there is an element of non-reproducability:

- right now (and different from earlier), on my fully updated Cauldron system, a local build produces an executable that runs without this problem (no libpng error messages at execution);

- earlier, built with precisely the same spec file (copied from the one I had committed to svn), the pcb executable had thrown the libpng error messages;

- the package built by the Mageia build system (and which is on the mirrors) also throws the libpng error messages 

- to make sure against inadvertently requiring libpng12, I had tried to un-install libpng12 prior to building pcb (which required uninstalling gocr, netpbm, komopozer - easy to recover later) - worked without problem. That was the begin of the present period in which I do not get the "faulty packages" message any more (even after re-installing libpng12 before a re-build) - is this concidence? is there causality?

There is one element of caution in what I say: at present, I have a non-resolved problem with creating info files during pcb build - but I do not see how these 2 issues could be related.
Comment 13 Stew Benedict 2012-02-23 14:49:43 CET
Presence of libpng12 at build time shouldn't matter, but the -devel package might.
Comment 14 Stew Benedict 2012-03-14 12:07:57 CET
Closing this out. It doesn't seem likely that the stack is going to revert to png12 at this stage I notice rawhide has png15 with a libpng-compat that seems to be built from png15 source that provides png12, and they don't have all these failures in the LSB/desktop testing.

Status: ASSIGNED => RESOLVED
Resolution: (none) => WONTFIX


Note You need to log in before you can comment on or make changes to this bug.