Re: many thread applications are unstable on 7-current

From: Norikatsu Shigemura <nork_at_FreeBSD.org>
Date: Sun, 23 Jul 2006 19:15:30 +0900
On Tue, 18 Jul 2006 09:39:43 +1000
Iain Templeton <iain.templeton_at_cisra.canon.com.au> wrote:
> >  5 nork_at_nadesico$ firefox
> > /libexec/ld-elf.so.1: /usr/lib/libthr.so.2: Undefined symbol "thr_getscheduler"
> > 6 nork_at_nadesico$ cvsync
> > /libexec/ld-elf.so.1: /usr/lib/libthr.so.2: Undefined symbol "thr_getscheduler"
> If you have set SYMVER_ENABLED when building libc, then you may not have 
> thr_getscheduler(), thr_setscheduler() and thr_setschedparam() in the 
> src/lib/libc/sys/Versions.def file for the syscalls. (Path and syscall 
> name may vary...)

	I knew why these functions are not.  Some syscall functions
	are not in Symbol.map.  Please apply following patch.

--- lib/libc/sys/Symbol.map.orig	Mon Mar 13 09:53:20 2006
+++ lib/libc/sys/Symbol.map	Sun Jul 23 12:18:24 2006
_at__at_ -42,6 +42,7 _at__at_
 	adjtime;
 	aio_cancel;
 	aio_error;
+	aio_fsync;
 	aio_read;
 	aio_return;
 	aio_suspend;
_at__at_ -293,10 +294,13 _at__at_
 	syscall;
 	thr_create;
 	thr_exit;
+	thr_getscheduler;
 	thr_kill;
 	thr_new;
 	thr_self;
 	thr_set_name;
+	thr_setschedparam;
+	thr_setscheduler
 	thr_suspend;
 	thr_wake;
 	ktimer_create;		# Do we want these to be publc interfaces?
_at__at_ -400,6 +404,8 _at__at_
 	__sys_aio_cancel;
 	_aio_error;
 	__sys_aio_error;
+	_aio_fsync;
+	__sys_aio_fsync;
 	_aio_read;
 	__sys_aio_read;
 	_aio_return;
_at__at_ -902,6 +908,8 _at__at_
 	__sys_thr_create;
 	_thr_exit;
 	__sys_thr_exit;
+	_thr_getscheduler;
+	__sys_thr_getscheduler;
 	_thr_kill;
 	__sys_thr_kill;
 	_thr_new;
_at__at_ -910,6 +918,10 _at__at_
 	__sys_thr_self;
 	_thr_set_name;
 	__sys_thr_set_name;
+	_thr_setschedparam;
+	__sys_thr_setscheduler;
+	_thr_setscheduler;
+	__sys_thr_setscheduler;
 	_thr_suspend;
 	__sys_thr_suspend;
 	_thr_wake;


	I found above functions by runing following command:
	$ cd /usr/obj/usr/src/lib/libc
	$ readelf -sW *.o | fgrep -e GLOBAL -e WEAK | fgrep -v -e HIDDEN -e UND | fgrep FUNC | awk '{print $8}' | while read i; do echo -n "$i	"; if fgrep -qw $i Version.map; then echo "*EXIST*"; else echo "*NONE*"; fi; done
Received on Sun Jul 23 2006 - 08:15:51 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:58 UTC