Opened 17 months ago
Closed 17 months ago
#67568 closed defect (fixed)
gtkmm3: regression: atkmm-api disabled, causing inkscape failure: symbol not found: __ZN3Gtk6Widget20get_accessible_vfuncEv
Reported by: | ryandesign (Ryan Carsten Schmidt) | Owned by: | mascguy (Christopher Nielsen) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.8.1 |
Keywords: | monterey | Cc: | dbevans (David B. Evans) |
Port: | inkscape, gtkmm3 |
Description
On my Monterey x86_64 Mac this happens when I try to launch inkscape:
% inkscape dyld[19259]: Symbol not found: (__ZN3Gtk6Widget20get_accessible_vfuncEv) Referenced from: '/opt/local/lib/libinkscape_base.dylib' Expected in: '/opt/local/lib/libgtkmm-3.0.1.dylib' zsh: abort inkscape
% port provides /opt/local/lib/libinkscape_base.dylib /opt/local/lib/libgtkmm-3.0.1.dylib /opt/local/lib/libinkscape_base.dylib is provided by: inkscape /opt/local/lib/libgtkmm-3.0.1.dylib is provided by: gtkmm3
% port -qv installed inkscape gtkmm3 gtkmm3 @3.24.7_0+x11 (active) requested_variants='' platform='darwin 21' archs='x86_64' date='2023-05-30T20:42:00-0500' inkscape @1.2.2_3+x11 (active) requested_variants='' platform='darwin 21' archs='x86_64' date='2023-06-03T04:01:29-0500'
Change History (9)
comment:1 Changed 17 months ago by ryandesign (Ryan Carsten Schmidt)
Cc: | dbevans added |
---|---|
Port: | gtkmm3 added |
comment:2 Changed 17 months ago by kencu (Ken)
might be this, in the Portfile:
configure.args-append \ -Dbuild-atkmm-api=false
toggle that to true, perhaps
comment:3 Changed 17 months ago by Christopher Nielsen <mascguy@…>
comment:4 Changed 17 months ago by mascguy (Christopher Nielsen)
Summary: | inkscape @1.2.2: Symbol not found: (__ZN3Gtk6Widget20get_accessible_vfuncEv) → gtkmm3: regression: atkmm-api disabled, causing inkscape failure: symbol not found: __ZN3Gtk6Widget20get_accessible_vfuncEv |
---|
Sorry about this, here's the quick backstory:
I went through multiple rounds of testing, when validating the various updates to the libs tracked by issue:65859.
During that validation, I tested every currently-installed app by launching them, and quickly kicking the tires of each. But none of them failed with that error. (Inkscape included.) The important thing to note is that I purposely didn't rebuild any apps like Inkscape either, to mirror the update scenario for all of our users.
So I'm not entirely clear how this slipped through without being caught sooner. And I would have expected a Trac ticket to be submitted by now, but there haven't been any reports that I'm aware of.
The one difference is that I use Quartz ports exclusively, but I don't think that should have any bearing on the missing symbol in question: The accessibility-related API should exist and function similarly, regardless of whether the libs are installed as Quartz or X11.
I'm reasonably confident that everything else is OK, but I'll re-review all of the updates regardless. And great catch Ryan, thanks for bringing this to my attention!
comment:5 Changed 17 months ago by mascguy (Christopher Nielsen)
p.s. Let me know whether the latest commit fixes the issue for you, after it comes through. Until then, I'll leave the ticket open, just-in-case...
comment:6 Changed 17 months ago by Christopher Nielsen <mascguy@…>
comment:7 Changed 17 months ago by mascguy (Christopher Nielsen)
FYI, while there technically shouldn't be a need to rev-bump all rdependents of gtkmm3
- enabling accessibility features shouldn't cause ABI breakage, it's only when going from enabled to disabled that does - I rev-bumped them anyway, to ensure we're in a known, consistent state.
comment:8 follow-up: 9 Changed 17 months ago by mascguy (Christopher Nielsen)
Ryan, is this fixed now?
comment:9 Changed 17 months ago by mascguy (Christopher Nielsen)
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Replying to mascguy:
Ryan, is this fixed now?
Closing as fixed. Let me know if you're still seeing the issue.
Replying to ryandesign:
The installation date shown here is misleading in that I did not build from source on that date; I used the private binary produced by the buildbot on 2023-05-05.
Downgrading gtkmm3 to 3.24.2_0 works. This suggests something significant happened between gtkmm3 3.24.2 and 3.24.7. Unfortunately the gtkmm3 3.24.2->3.24.7 update in MacPorts was an overhaul of the port with many changes, making it difficult to know what may have caused this.
One significant change that happened then for MacPorts is that the port switched from autotools to meson. It also switched dependencies from atkmm, cairomm, glibmm, and pangomm to atkmm-1.6, cairomm-1.0, glibmm-2.4, and pangomm-1.4.
Looking in the gtkmm3 code,
get_accessible_vfunc
is only defined and used ifGTKMM_ATKMM_ENABLED
is defined. This makes me think that maybe the new gtkmm3 is not using atkmm, and that the fact that gtkmm3 was using atkmm at the time inkscape was built somehow seeped into the build of inkscape. I think this confirms it:So I would guess the solution is to make gtkmm3 use atkmm again. The presence of the atkmm-1.6 dependency shows the port is intending to use atkmm but something appears to be going wrong.
Looking at the most recent gtkmm3 build log from the buildbot, it says:
I tried leaving gtkmm3 at 3.24.7_0 and rebuilding inkscape 1.2.2_3 from source in trace mode but this failed.
I tried rebuilding gtkmm3 3.24.7_0 in trace mode but this failed.