|
Bugzilla – Full Text Bug Listing |
| Summary: | [Build 20230822] icewm segfaults during installation | ||
|---|---|---|---|
| Product: | [openSUSE] openSUSE Tumbleweed | Reporter: | Dominique Leuenberger <dimstar> |
| Component: | Basesystem | Assignee: | Simon Lees <simonf.lees> |
| Status: | RESOLVED FIXED | QA Contact: | E-mail List <qa-bugs> |
| Severity: | Normal | ||
| Priority: | P5 - None | CC: | fvogt |
| Version: | Current | ||
| Target Milestone: | --- | ||
| Hardware: | 32bit | ||
| OS: | Other | ||
| URL: | https://openqa.opensuse.org/tests/3523214/modules/online_repos/steps/3 | ||
| Whiteboard: | |||
| Found By: | openQA | Services Priority: | |
| Business Priority: | Blocker: | Yes | |
| Marketing QA Status: | --- | IT Deployment: | --- |
|
Description
Dominique Leuenberger
2023-08-23 12:06:09 UTC
Fabian traced this down to imlib2 (which was updated to 1.12.0 in the snapshot that started showing this issue. IMLIB2_ASM_OFF=1 seems to work around the issue - so giving hints that this indeed needs to be fixed in imlib2 Assigning to the imlib2 maintainer Here's the backtrace:
#0 __imlib_Scale_mmx_AARGBA () at asm_scale.S:610
#1 0xb7ee3f4a in __imlib_ScaleAARGBA (dx=<optimized out>, dy=<optimized out>, sow=<optimized out>, dow=<optimized out>, dh=<optimized out>, dw=<optimized out>, dyy=<optimized out>, dxx=<optimized out>, dest=<optimized out>,
srce=<optimized out>, isi=<optimized out>) at /usr/src/debug/imlib2-1.12.0/src/lib/scale.c:292
#2 __imlib_Scale.constprop.0 (isi=isi@entry=0x1c2ce90, aa=aa@entry=true, alpha=<optimized out>, srce=0x1c2d4d0, dest=0x1c3d4e0, dxx=0, dyy=0, dw=16, dh=16, dow=16, sow=128, dy=0, dx=0) at /usr/src/debug/imlib2-1.12.0/src/lib/scale.c:1060
#3 0xb7ec0e85 in __imlib_BlendImageToImage (im_src=0x1c2cdd0, im_dst=0x1c2ce30, aa=<optimized out>, blend=<optimized out>, merge_alpha=<optimized out>, ssx=0, ssy=0, ssw=128, ssh=128, ddx=0, ddy=0, ddw=16, ddh=16, cm=0x0, op=0, clx=0,
cly=0, clw=0, clh=0) at /usr/src/debug/imlib2-1.12.0/src/lib/blend.c:1947
#4 0xb7eb0f91 in imlib_create_cropped_scaled_image (src_x=0, src_y=0, src_width=128, src_height=128, dst_width=16, dst_height=16) at /usr/src/debug/imlib2-1.12.0/src/lib/api.c:1076
I guess some of the refactoring upstream broke assumptions in the MMX (!) code.
FWICT the official repo is at https://git.enlightenment.org/old/legacy-imlib2/. Having both "old" and "legacy" in there doesn't instill confidence.
(In reply to Fabian Vogt from comment #2) > I guess some of the refactoring upstream broke assumptions in the MMX (!) > code. Yep. commit ee61df687706d4907fb9dcc8f402ee8bdc321db2 Author: Kim Woelders <kim@woelders.dk> Date: Tue May 9 15:36:25 2023 +0200 scaling: Change ypoints[] from pointers to indices diff --git a/src/lib/scale.c b/src/lib/scale.c index 9307553..a79c3fc 100644 --- a/src/lib/scale.c +++ b/src/lib/scale.c @@ -11,8 +11,9 @@ /*\ NB: If you change this, don't forget asm_scale.S \*/ struct _imlib_scale_info { int *xpoints; - uint32_t **ypoints; - int *xapoints, *yapoints; + int *ypoints; + int *xapoints; + int *yapoints; int xup_yup; uint32_t *pix_assert; }; You can guess what was forgotten here. (In reply to Fabian Vogt from comment #2) > > FWICT the official repo is at > https://git.enlightenment.org/old/legacy-imlib2/. Having both "old" and > "legacy" in there doesn't instill confidence. This is not actually a huge concern, Its here because the Enlightenment project stopped using imlib2 15-20 years ago (There replacement is now part of libefl/libevas). Since then the project has been actively maintained by other people (hence getting a 1.2.0 release). (In reply to Fabian Vogt from comment #3) > (In reply to Fabian Vogt from comment #2) > > I guess some of the refactoring upstream broke assumptions in the MMX (!) > > code. > > Yep. > > commit ee61df687706d4907fb9dcc8f402ee8bdc321db2 > Author: Kim Woelders <kim@woelders.dk> > Date: Tue May 9 15:36:25 2023 +0200 > > scaling: Change ypoints[] from pointers to indices > > diff --git a/src/lib/scale.c b/src/lib/scale.c > index 9307553..a79c3fc 100644 > --- a/src/lib/scale.c > +++ b/src/lib/scale.c > @@ -11,8 +11,9 @@ > /*\ NB: If you change this, don't forget asm_scale.S \*/ > struct _imlib_scale_info { > int *xpoints; > - uint32_t **ypoints; > - int *xapoints, *yapoints; > + int *ypoints; > + int *xapoints; > + int *yapoints; > int xup_yup; > uint32_t *pix_assert; > }; > > You can guess what was forgotten here. I'll presume asm_scale.S given it hasn't changed. I'm not competent enough with intel assembly to come up with a patch, so i'll accept your disabling MXX as a work around for now and I'll raise this with upstream. Upstream has decided to disable the scaling code in Assembly (x86_64 is done by the compiler anyway). As such https://build.opensuse.org/request/show/1108295 will be a sufficient fix (the upstream fix just sets that option to false regardless of the flag). |