Time to put ${PTHREAD_LIBS} in the x11/xscreensaver-gnome?

Stephen Hilton nospam at hiltonbsd.com
Thu Mar 25 09:44:48 PST 2004


On Thu, 25 Mar 2004 23:46:28 +0900
Alexander Nedotsukov <bland at freebsd.org> wrote:

> Jeremy Messenger wrote:
> 
> > Hello,
> >
> > I do think that GNOME team should add the ${PTHREAD_LIBS} in the 
> > x11/xscreensaver-gnome at LDFLAGS line. There are few people have the 
> > same problem, so it's not just a Nvidia driver issue. Updated to 4.15 
> > must have changed something, because the older version doesn't 
> > required the ${PTHREAD_LIBS}.
> 
> Guys,
> 
> I don't think it's good idea because of two reasons:
> 1. I have xscreensaver-demo properly linked and running just fine here. 
> Plus since I have nvidia GL library installed when all GL hacks and 
> gl-helper mapped through libmap to use libc_r  they also runs fine.
> 2. xscreensaver do not make any use of threading at all.
> Even the way you proposing may fix situation on your side this is not 
> the right thing. I fact for nvidia users it will be better not to link 
> against any threading library at all. This is the way things also works 
> fine on my side.
> Speaking about incorrect linking. To proove this is the case it's 
> necessary to found at least one object wich make use of pthreads API but 
> do not linked against it or two objects linked against different 
> threading libraries. As I said I don't see any.
> Well to be constructive can people (not only once who currently 
> expirince a problem with xscreensaver) try the patch attached and report 
> two things is: it works and what is your GL library Nvidia/Mesa?
> 
> Thanks,
> Alexander.
> ps. Btw, others better follow my advise to figure out what is wrong with 
> your installation.

Alexander,

My system uses a Raedon 9000 card in dual-head mode, FreeBSD 5.2.1-RELEASE-p3 
and a recent ports tree.  Xscreensaver-demo was working fine then 
xscreensaver-gnome version was updated and the breakage occurred. I did 
not change my basic config, just portupgraded to the latest.

Here is the exact error message I was getting:
------------------------------------------------------------
hilton>$ xscreensaver-demo
xscreensaver-demo: 12:32:45: error closing "/usr/home/stephenh/.xscreensav
er": Bad file descriptor
xscreensaver-demo: too early for dialog?
Fatal error 'Unable to read from thread kernel pipe' at line 1100 in file
 /usr/src/lib/libc_r/uthread/uthread_kern.c (errno = 0)
Abort trap (core dumped)
hilton>$
------------------------------------------------------------

Deleteing /usr/home/stephenh/.xscreensaver had no effect.

Around a week ago I totally rebuilt this system from scratch, all s.w. 
installed via ports, and still the xscreensaver-demo crash. The 
${PTHREAD_LIBS} hack did fix the problem. All other applications seemed 
to be working well, the screensaver appeared as the only borked item.

I do use a /etc/libmap.conf like this:
----------------------------------------------------------
libpthread.so.1         libc_r.so.5
libpthread.so           libc_r.so

# Flash6 with Mozilla/Firebird/Galeon/Epiphany
[/usr/local/lib/linux-flashplugin6/libflashplayer.so]
libpthread.so.0                 pluginwrapper/flash6.so
libdl.so.2                      pluginwrapper/flash6.so
libz.so.1                       libz.so.2
libstdc++-libc6.2-2.so.3        libstdc++.so.4
libm.so.6                       libm.so.2
libc.so.6                       pluginwrapper/flash6.so
 
# Acrobat with Mozilla/Firebird/Galeon/Epiphany
[/usr/local/Acrobat5/Browsers/intellinux/nppdf.so]
libc.so.6                       pluginwrapper/acrobat.so
 
# Java3D
[/usr/local/jdk1.4.2/jre/lib/i386/libJ3D.so]
libdl.so.2                      pluginwrapper/java3d.so
libm.so.6                       libm.so.2
libnsl.so.1                     pluginwrapper/java3d.so
libpthread.so.0                 pluginwrapper/java3d.so
libc.so.6                       pluginwrapper/java3d.so

[/usr/local/jdk1.4.2/jre/lib/i386/libj3daudio.so]
libm.so.6                       libm.so.2
libnsl.so.1                     pluginwrapper/java3d_snd.so
libpthread.so.0                 pluginwrapper/java3d_snd.so
libc.so.6                       pluginwrapper/java3d_snd.so
 
[/usr/local/jdk1.4.2/jre/lib/i386/libJ3DUtils.so]
libpthread.so.0                 pluginwrapper/java3d.so
libc.so.6                       pluginwrapper/java3d.so
----------------------------------------------------------


And my /etc/make.conf looks like this:
----------------------------------------------------------
CPUTYPE?=i686
CFLAGS= -O -pipe
CXXFLAGS+= -fmemoize-lookups -fsave-memoized
BDECFLAGS=      -W -Wall -ansi -pedantic -Wbad-function-cast -Wcast-align \
                -Wcast-qual -Wchar-subscripts -Winline \
                -Wmissing-prototypes -Wnested-externs -Wpointer-arith \
                -Wredundant-decls -Wshadow -Wstrict-prototypes -Wwrite-strings
COPTFLAGS= -O -pipe
NO_BIND=        true    # do not build BIND
NO_KERBEROS=    true    # do not build and install Kerberos 5 (KTH Heimdal)
NOGAMES=        true    # do not build games (games/ subdir)
NOPROFILE=      true    # Avoid compiling profiled libraries
NO_LPR=         true    # do not build lpr and related programs
NO_SENDMAIL=    true    # do not build sendmail and related programs
MAKE_IDEA=      YES     # IDEA (128 bit symmetric encryption)
COMPAT4X=       yes
DOC_LANG=       en_US.ISO8859-1
WRKDIRPREFIX=   /var/portswrk
KERNCONF=       HILTON
WITH_GTK2=      yes
WITH_FAM=       yes
WITH_GNOME=     yes
WITH_GNOME_DESKTOP=     2
PERL_VER=5.8.2
PERL_VERSION=5.8.2
PERL_ARCH=mach
NOPERL=yo
NO_PERL=yo
NO_PERL_WRAPPER=yo
----------------------------------------------------------

Kernel config:
------------------------------------------------------------
# $FreeBSD: src/sys/i386/conf/HILTON,v 1.234.5.6 2004/03/19 23:59:59 sch Exp $
 
machine         i386
cpu             I686_CPU
options         CPU_ATHLON_SSE_HACK
options         CPU_ENABLE_SSE
ident           HILTON
 
options         INCLUDE_CONFIG_FILE
 
#To statically compile in device wiring instead of /boot/device.hints
#hints          "GENERIC.hints"         #Default places to look for devices.
 
#makeoptions    DEBUG=-g                #Build kernel with gdb(1) debug symbols
 
options         SCHED_4BSD              #4BSD scheduler
options         INET                    #InterNETworking
#options        INET6                   #IPv6 communications protocols
options         FFS                     #Berkeley Fast Filesystem
options         SOFTUPDATES             #Enable FFS soft updates support
options         UFS_ACL                 #Support for access control lists
options         UFS_DIRHASH             #Improve performance on big directories
options         MD_ROOT                 #MD is a potential root device
options         NFSCLIENT               #Network Filesystem Client
options         NFSSERVER               #Network Filesystem Server
#options        NFS_ROOT                #NFS usable as /, requires NFSCLIENT
options         MSDOSFS                 #MSDOS Filesystem
options         CD9660                  #ISO 9660 Filesystem
options         PROCFS                  #Process filesystem (requires PSEUDOFS)
options         PSEUDOFS                #Pseudo-filesystem framework
options         COMPAT_43               #Compatible with BSD 4.3 [KEEP THIS!]
options         COMPAT_FREEBSD4         #Compatible with FreeBSD4
options         COMPAT_LINUX
options         LINPROCFS
options         SCSI_DELAY=7000         #Delay (in ms) before probing SCSI
options         KTRACE                  #ktrace(1) support
options         SYSVSHM                 #SYSV-style shared memory
options         SYSVMSG                 #SYSV-style message queues
options         SYSVSEM                 #SYSV-style semaphores
options         _KPOSIX_PRIORITY_SCHEDULING #Posix P1003_1B real-time extensions
options         KBD_INSTALL_CDEV        # install a CDEV entry in /dev
options         AHC_REG_PRETTY_PRINT    # Print register bitfields in debug
                                        # output.  Adds ~128k to driver.
options         AHD_REG_PRETTY_PRINT    # Print register bitfields in debug
                                        # output.  Adds ~215k to driver.
 
device          isa
device          pci
 
# ACPI support
device          acpi
 
# Floppy drives
device          fdc
 
# ATA and ATAPI devices
device          ata
device          atadisk                 # ATA disk drives
device          ataraid                 # ATA RAID drives
device          atapicd                 # ATAPI CDROM drives
device          atapifd                 # ATAPI floppy drives
device          atapist                 # ATAPI tape drives
options         ATA_STATIC_ID           #Static device numbering
 
# SCSI controller
device          sym
options         SYM_SETUP_SCSI_DIFF     #-HVD support for 825a, 875, 885
 
# SCSI peripherals
device          scbus           # SCSI bus (required for SCSI)
device          da              # Direct Access (disks)
device          sa              # Sequential Access (tape etc)
device          cd              # CD
device          pass            # Passthrough device (direct SCSI access)
device          ses             # SCSI Environmental Services (and SAF-TE)
 
# atkbdc0 controls both the keyboard and the PS/2 mouse
device          atkbdc          # AT keyboard controller
device          atkbd           # AT keyboard
device          psm             # PS/2 mouse
 
device          vga             # VGA video card driver
 
device          splash          # Splash screen and screen saver support
 
options         SC_DISABLE_REBOOT       # disable reboot key sequence
options         SC_HISTORY_SIZE=2045    # number of history buffer lines
 
# syscons is the default console driver, resembling an SCO console
device          sc
 
device          agp             # support several AGP chipsets
#device         radeondrm       # ATI Radeon AGP drm support
 
# Floating point support - do not disable.
device          npx
 
# Power management support (see NOTES for more options)
device          apm
 
# Serial (COM) ports
device          sio             # 8250, 16[45]50 based serial ports
 
# Parallel port
device          ppc
device          ppbus           # Parallel port bus (required)
device          lpt             # Printer
device          plip            # TCP/IP over parallel
device          ppi             # Parallel port interface device
#device         vpo             # Requires scbus and da
 
# If you've got a "dumb" serial or parallel PCI card that is
# supported by the puc(4) glue driver, uncomment the following
# line to enable it (connects to the sio and/or ppc drivers):
device         puc
 
# PCI Ethernet NICs that use the common MII bus controller code.
# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
device          miibus          # MII bus support
device          bfe             # Broadcom BCM440x 10/100 ethernet
device          bge             # Broadcom BCM570xx Gigabit Ethernet
device          fxp             # Intel EtherExpress PRO/100B (82557, 82558)
device          xl              # 3Com 3c90x (``Boomerang'', ``Cyclone'')
device          rl              # Realtek fast ethernet
 
# Pseudo devices - the number indicates how many units to allocate.
device          random          # Entropy device
device          loop            # Network loopback
device          ether           # Ethernet support
device          sl              # Kernel SLIP
device          ppp             # Kernel PPP
device          tun             # Packet tunnel.
device          pty             # Pseudo-ttys (telnet etc)
device          md              # Memory "disks"
device          gif             # IPv6 and IPv4 tunneling
device          faith           # IPv6-to-IPv4 relaying (translation)
device          bpf             # Berkeley packet filter
device          snp
 
# USB support
device          uhci            # UHCI PCI->USB interface
device          ohci            # OHCI PCI->USB interface
device          usb             # USB Bus (required)
#device         udbp            # USB Double Bulk Pipe devices
device          ugen            # Generic
device          uhid            # "Human Interface Devices"
device          ukbd            # Keyboard
device          ulpt            # Printer
device          umass           # Disks/Mass storage - Requires scbus and da
device          ums             # Mouse
device          urio            # Diamond Rio 500 MP3 player
device          uscanner        # Scanners
 
# IPFILTER firewalling
options         IPFILTER
options         IPFILTER_LOG
option          PFIL_HOOKS
option          IPFILTER_DEFAULT_BLOCK
 
# SOUND
device          pcm
------------------------------------------------------------


Should I have this in my /etc/make.conf:
COMPAT4X=       yes
Or is this unneeded or a source of problems ?

Any insight or ideas as to what may be "misconfigured" etc... ?

The only app that misbehaves is xscreensaver-demo, and the fix of adding 
${PTHREAD_LIBS} to the LDCONFIG line in the Makefile does solve the 
xscreensaver-demo crash.

Is there some aspect to the Raedon drivers that is tickled by dual-head 
mode?

Regards,


Stephen Hilton
nospam at hiltonbsd.com


More information about the freebsd-gnome mailing list