[Gc] Missing symbols error when _dyld_bind_fully_image_containing_address is called on OSX

Kjetil Matheussen <[email protected]> Wed, 13 Jul 2016 10:14:34 +0200
Newsgroups gmane.comp.programming.garbage-collection.boehmgc
Message-ID <CAC6niEJtPmqh4SfB8-mNpgER2nbRL04L3k2jYJPDaE5s=tqcqA@mail.gmail.com>
--===============2015936666==
Content-Type: multipart/alternative; boundary=001a114004b6ccbdff05377ff96c

--001a114004b6ccbdff05377ff96c
Content-Type: text/plain; charset=UTF-8

Hi all,

I'm compiling a program (users.notam02.no/~kjetism/radium) for osx which
uses bdwgc.

But when I run the program I get this error:

dyld: _dyld_bind_fully_image_containing_address() error
dyld: Symbol not found:
__ZN22QWindowSystemInterface19registerTouchDeviceEP12QTouchDevice
  Referenced from:
/Volumes/samba_share/Radium.app/Contents/MacOS/./../lib/QtWebKit
  Expected in: /Volumes/samba_share/Radium.app/Contents/MacOS/./../lib/QtGui
 in /Volumes/samba_share/Radium.app/Contents/MacOS/./../lib/QtWebKit
Trace/BPT trap: 5

It seems like Qt5 from macports has an unresolved symbol. Normally, this
shouldn't be a problem since I'm not calling that function.

But, the error happens because bdwgc
calls _dyld_bind_fully_image_containing_address
during GC_INIT().[1]

To solve this problem, is it safe to just remove that call to
'_dyld_bind_fully_image_containing_address'
in bdwgc? I know that I don't store pointers used by the GC in any
dynamically loaded
libraries, and in my limited knowledge about the gc, that's the only reason
bdwgc has
for calling this function... There should be a shorter startup time as well
for the program when doing
this.

And as far as I can see, it works for me to remove the
call to '_dyld_bind_fully_image_containing_address' in bdwgc.
The program runs fine and there are no crashes so far,
but maybe it's not safe in the long run? Hopefully someone
who knows more than me can comment on this.


[1]  Same thing happens if I set the DYLD_BIND_AT_LAUNCH
environment variable, but then the error shows up before GC_INIT() is
called.

--001a114004b6ccbdff05377ff96c
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><span style=3D"font-size:12.8px">Hi all,</span><div style=
=3D"font-size:12.8px"><br></div><div style=3D"font-size:12.8px">I&#39;m com=
piling a program (<a href=3D"http://users.notam02.no/~kjetism/radium" targe=
t=3D"_blank">users.notam02.no/~kjetism/radium</a>) for osx which uses bdwgc=
.</div><div style=3D"font-size:12.8px"><br></div><div style=3D"font-size:12=
.8px">But when I run the program I get this error:</div><div style=3D"font-=
size:12.8px"><br></div><div style=3D"font-size:12.8px"><div>dyld: _dyld_bin=
d_fully_image_containing_address() error</div><div>dyld: Symbol not found: =
__ZN22QWindowSystemInterface19registerTouchDeviceEP12QTouchDevice</div><div=
>=C2=A0 Referenced from: /Volumes/samba_share/Radium.app/Contents/MacOS/./.=
./lib/QtWebKit</div><div>=C2=A0 Expected in: /Volumes/samba_share/Radium.ap=
p/Contents/MacOS/./../lib/QtGui</div><div>=C2=A0in /Volumes/samba_share/Rad=
ium.app/Contents/MacOS/./../lib/QtWebKit</div><div>Trace/BPT trap: 5</div><=
div><br></div></div><div style=3D"font-size:12.8px">It seems like Qt5 from =
macports has an unresolved symbol. Normally, this</div><div style=3D"font-s=
ize:12.8px">shouldn&#39;t be a problem since I&#39;m not calling that funct=
ion.</div><div style=3D"font-size:12.8px"><br></div><div style=3D"font-size=
:12.8px">But, the error happens because bdwgc calls=C2=A0_dyld_bind_fully_i=
mage_containing_address</div><div style=3D"font-size:12.8px">during GC_INIT=
().[1]</div><div style=3D"font-size:12.8px"><br></div><div style=3D"font-si=
ze:12.8px">To solve this problem, is it safe to just remove that call to &#=
39;_dyld_bind_fully_image_containing_address&#39;</div><div style=3D"font-s=
ize:12.8px">in bdwgc? I know that I don&#39;t store pointers used by the GC=
 in any dynamically loaded</div><div style=3D"font-size:12.8px">libraries, =
and in my limited knowledge about the gc, that&#39;s the only reason bdwgc =
has</div><div style=3D"font-size:12.8px">for calling this function... There=
 should be a shorter startup time as well for the program when doing</div><=
div style=3D"font-size:12.8px">this.</div><div style=3D"font-size:12.8px"><=
br></div><div style=3D"font-size:12.8px">And as far as I can see, it works =
for me to remove the</div><div style=3D"font-size:12.8px">call to &#39;_dyl=
d_bind_fully_image_containing_address&#39; in bdwgc.</div><div style=3D"fon=
t-size:12.8px">The program runs fine and there are no crashes so far,</div>=
<div style=3D"font-size:12.8px">but maybe it&#39;s not safe in the long run=
? Hopefully someone</div><div style=3D"font-size:12.8px">who knows more tha=
n me can comment on this.</div><div style=3D"font-size:12.8px"><br></div><d=
iv style=3D"font-size:12.8px"><br></div><div style=3D"font-size:12.8px"><di=
v>[1] =C2=A0Same thing happens if I set the=C2=A0DYLD_BIND_AT_LAUNCH</div><=
div>environment variable, but then the error shows up before GC_INIT() is c=
alled.</div></div></div>

--001a114004b6ccbdff05377ff96c--

--===============2015936666==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
bdwgc mailing list
[email protected]
https://lists.opendylan.org/mailman/listinfo/bdwgc
--===============2015936666==--