7-STABLE regression that breaks lang/drscheme is src/contrib/gcc/gthr-posix.h

Andrew Reilly andrew at areilly.bpc-users.org
Mon Jan 21 17:15:28 PST 2008

Hello again,

[to recap: drscheme, (which is an IDE that runs under the "mred"
runtime, built from ports/lang/drscheme (or actually manually
from a personal copy of that Makefile that builds the current
release:  372, rather than ver 370 in ports)) worked beautifully
on my system until I updated to 7-STABLE after 4 Jan.  I track
-STABLE every week or two.  After that, it segfaults before
printing or displaying anything, and running under gdb has found
that it stops in the garbage collector initialization.  I
haven't raised a PR for this yet because I still think that the
problem is probably the drscheme FreeBSD configuration that has
bit-rotted a little, now that FreeBSD has changed slightly.
Still investigating...  I've cc'd Joseph Koshy, because this
seems to be somehow related to PR ports/118808.]

I've done the binary search through CVS, and established that
the precise file and revision that is causing me (or rather,
drscheme) grief: src/contrib/gcc/gthr-posix.h marius
at 5 Jan 22:58.51.  Csupping back to 5 Jan 22:50 is enough to
make everyting happy again.

Unfortunately, I'm at a loss to explain how this change could be
causing an existing binary to run or not, because it changes the
compiler.  Well, presumably it changes the installed libc.so and
libstdc++.so, both of which are linked in at run-time (c++ is used
in mred/drscheme for the wxWidgets GUI).  Indeed, the most recent
time that I backed this revision of gthr-posix.h out (regressed
to 5 Jan 22:50), drscheme started to work as soon as the system
libraries had been installed, before I had rebooted.

Since there hasn't been any other wailing about incompatability
since this change, my guess is that mred was somehow working
around the previous FreeBSD behaviour: it has quite a bit of
low-level platform-specific configuration, since it is a
language runtime.  The ideal solution will be to figure out how
to tweak it's FreeBSD compatability to suit the new operation.
If anyone can offer a hint as to which area I should be looking
at for configuration knobs, I'd be really grateful.

Extra data:  ldd mred:
	libmred3m-372.so => /usr/local/lib/libmred3m-372.so (0x800639000)
	libmzscheme3m-372.so => /usr/local/lib/libmzscheme3m-372.so (0x800a40000)
	libXaw8.so.8 => /usr/local/lib/libXaw8.so.8 (0x800e0f000)
	libXmu.so.6 => /usr/local/lib/libXmu.so.6 (0x800f7c000)
	libXt.so.6 => /usr/local/lib/libXt.so.6 (0x801094000)
	libSM.so.6 => /usr/local/lib/libSM.so.6 (0x8011f4000)
	libICE.so.6 => /usr/local/lib/libICE.so.6 (0x8012fc000)
	libXext.so.6 => /usr/local/lib/libXext.so.6 (0x801416000)
	libGL.so.1 => /usr/local/lib/libGL.so.1 (0x801526000)
	libXft.so.2 => /usr/local/lib/libXft.so.2 (0x8016a2000)
	libcairo.so.2 => /usr/local/lib/libcairo.so.2 (0x8017b5000)
	libfontconfig.so.1 => /usr/local/lib/libfontconfig.so.1 (0x801934000)
	libfreetype.so.9 => /usr/local/lib/libfreetype.so.9 (0x801a67000)
	libexpat.so.6 => /usr/local/lib/libexpat.so.6 (0x801be1000)
	libglitz.so.1 => /usr/local/lib/libglitz.so.1 (0x801d04000)
	libXrender.so.1 => /usr/local/lib/libXrender.so.1 (0x801e2d000)
	libX11.so.6 => /usr/local/lib/libX11.so.6 (0x801f36000)
	libXau.so.6 => /usr/local/lib/libXau.so.6 (0x80213a000)
	libXdmcp.so.6 => /usr/local/lib/libXdmcp.so.6 (0x80223d000)
	librpcsvc.so.4 => /usr/lib/librpcsvc.so.4 (0x802342000)
	libpng.so.5 => /usr/local/lib/libpng.so.5 (0x80244b000)
	libz.so.4 => /lib/libz.so.4 (0x802571000)
	libjpeg.so.9 => /usr/local/lib/libjpeg.so.9 (0x802686000)
	libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x8027a7000)
	libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x8029a0000)
	libm.so.5 => /lib/libm.so.5 (0x802b9f000)
	libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x802cb9000)
	libthr.so.3 => /lib/libthr.so.3 (0x802dc6000)
	libc.so.7 => /lib/libc.so.7 (0x802edc000)
	libXpm.so.4 => /usr/local/lib/libXpm.so.4 (0x8030f9000)
	libXp.so.6 => /usr/local/lib/libXp.so.6 (0x80320a000)
	libXxf86vm.so.1 => /usr/local/lib/libXxf86vm.so.1 (0x803312000)
	libXdamage.so.1 => /usr/local/lib/libXdamage.so.1 (0x803417000)
	libXfixes.so.3 => /usr/local/lib/libXfixes.so.3 (0x803519000)
	libdrm.so.2 => /usr/local/lib/libdrm.so.2 (0x80361e000)

ldd mzscheme (which works just fine: it's the command-line
language, without the wxWidgets GUI, but using exactly the same
garbage collector):
	libmzscheme3m-372.so => /usr/local/lib/libmzscheme3m-372.so (0x800638000)
	libm.so.5 => /lib/libm.so.5 (0x800a07000)
	libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x800b21000)
	libc.so.7 => /lib/libc.so.7 (0x800d1a000)



More information about the freebsd-stable mailing list