+ -
当前位置:首页 → 问答吧 → 新系统,新问题:"sem_post: Invalid argument" (已解决)

新系统,新问题:"sem_post: Invalid argument" (已解决)

时间:2007-01-23

来源:互联网

昨天新安装一个系统2006.0的,基系统也是2006.0,从stage3开始的,在chroot的过程中没有任何的异样,但当使用新内核启动系统后,不管emerge哪个软件,都出现如下现象:
代码:
G-SRV ~ # emerge -pv arpwatch
sem_post: Invalid argument
sem_post: Invalid argument
sem_post: Invalid argument
sem_post: Invalid argument
sem_post: Invalid argument
sem_post: Invalid argument
sem_post: Invalid argument
sem_post: Invalid argument
。。。。。。。。n多。。。。。。
sem_post: Invalid argument
sem_post: Invalid argument
sem_post: Invalid argument

These are the packages that would be merged, in order:

Calculating dependencies sem_post: Invalid argument
sem_post: Invalid argument
sem_post: Invalid argument
sem_post: Invalid argument -
sem_post: Invalid argument /
sem_post: Invalid argument -
sem_post: Invalid argument -
sem_post: Invalid argument \
sem_post: Invalid argument -
sem_post: Invalid argument -
sem_post: Invalid argument \
sem_post: Invalid argument |
。。。。。。。同样n多。。。。。。
sem_post: Invalid argument
sem_post: Invalid argument
sem_post: Invalid argument
 ... done!
sem_post: Invalid argument
[ebuild R ] net-analyzer/arpwatch-2.1.15-r3 USE="(-selinux)" 0 kB

Total: 1 package (1 reinstall), Size of downloads: 0 kB
sem_post: Invalid argument
sem_post: Invalid argument
sem_post: Invalid argument
sem_post: Invalid argument
sem_post: Invalid argument
sem_post: Invalid argument
sem_post: Invalid argument
sem_post: Invalid argument
sem_post: Invalid argument
sem_post: Invalid argument
sem_post: Invalid argument
sem_post: Invalid argument
G-SRV ~ #
代码:
G-SRV ~ # cat /proc/version
Linux version 2.6.19 (root@G-SRV) (gcc version 3.4.4 (Gentoo 3.4.4-r1, ssp-3.4.4-1.0, pie-8.7.8)) #1 Mon Jan 22 03:14:29 Local time zone must be set--see zic manu

G-SRV ~ # gcc -v
Reading specs from /usr/lib/gcc/i686-pc-linux-gnu/3.4.4/specs
Configured with: /var/tmp/portage/gcc-3.4.4-r1/work/gcc-3.4.4/configure --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/3.4.4 --includedir=/usr/lib/gcc/i686-pc-linux-gnu/3.4.4/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/3.4.4 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/3.4.4/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/3.4.4/info --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/3.4.4/include/g++-v3 --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --disable-libunwind-exceptions --disable-multilib --disable-libgcj --enable-languages=c,c++,f77 --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
Thread model: posix
gcc version 3.4.4 (Gentoo 3.4.4-r1, ssp-3.4.4-1.0, pie-8.7.8)
emerge -pv glibc信息如下:
代码:
[ebuild N ] sys-libs/timezone-data-2007a USE="nls" 0 kB
[ebuild U ] sys-libs/glibc-2.5 [2.3.5-r2] USE="nls nptl nptlonly* -build -glibc-compat20 -glibc-omitfp -hardened (-multilib) -profile (-selinux) (-erandom%) (-linuxthreads-tls%) (-pic%) (-userlocales%)" 0 kB
没有emerge world过。

google 了一大堆差不多的问题,但好象都没有什么解决办法。
请问知情人士,这个是什么出了问题? 先谢谢了!

作者: bpxyz   发布时间: 2007-01-23

继续找问题,感觉和python有关,于是emerge python,但结果依然一样。。。

作者: bpxyz   发布时间: 2007-01-23

sco的网站上这样解释:
引用:
[EINVAL] (22) Invalid argument
An invalid argument was specified (for example, unmounting a non-mounted device or specifying an undefined signal in a call to sigaction(S) or kill(S)).

作者: bpxyz   发布时间: 2007-01-23

升级glibc

作者: zhllg   发布时间: 2007-01-23

直接表现确实是python的问题,你也看到了,那个\-/这些符号,是emerge的时候计算依赖关系时旋转的那个输出。但是根源应该不是python。试试版主的方案

作者: 三翻领   发布时间: 2007-01-23

谢谢关注!

刚刚已经升级了glibc和python,
但问题依然。。。。。。。。。。

我不想重新安装啊,已经花了10多个小时了,难道又要重来?

作者: bpxyz   发布时间: 2007-01-23

我怀疑是你有没有emerge portage&etc-update,或许bash都有可能

作者: 三翻领   发布时间: 2007-01-23

看到你的glibc版本太旧,还以为是内核和glibc不批配
你看你的fstab里有没有
tmpfs /dev/shm tmpfs defaults 0 0

作者: zhllg   发布时间: 2007-01-24

没有那么夸张哈。
我算了算,应该我安装gentoo也有10多次了。
这次安装是想弄几台服务器出来。

所以这样的基本操作是肯定搞了的。
应该是某个小bug吧。

为了验证,我再把上面你说的cmd运行一次。


还有,在emerge过程中,当软件complie完成,进行下一个strip操作的时候,还来个错:
find: invalid predicate '-L'

我怎么尽碰到这样的错误哦。

作者: bpxyz   发布时间: 2007-01-24

引用:
作者: zhllg
看到你的glibc版本太旧,还以为是内核和glibc不批配
你看你的fstab里有没有
tmpfs /dev/shm tmpfs defaults 0 0

这个当然有滴。。

引用:
G-SRV ~ # mount
/dev/hda12 on / type reiserfs (rw,noatime)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw)
shm on /dev/shm type tmpfs (rw,noexec,nosuid,nodev)
usbfs on /proc/bus/usb type usbfs (rw,devmode=0664,devgid=85)

作者: bpxyz   发布时间: 2007-01-24

作者: bpxyz   发布时间: 2007-01-24

futex可是nptl的基础啊
新glibc必不可少的

make defconfig也会有这个东西
参见 http://zh.gentoo-wiki.com/HOWTO_Compile_Kernel

$ grep FUTEX /usr/src/linux/arch/i386/defconfig
CONFIG_FUTEX=y

作者: zhllg   发布时间: 2007-01-24

好诡秘啊,这都有。不过解决最好

作者: 三翻领   发布时间: 2007-01-24

这个不是新旧的问题,是人的问题。
每次我编内核都喜欢看那些不认识的条目的帮助,但这次却因为时间乱来,居然把这条给取消了,结果是非常严重的,还好系统可以启动。
看看原由:

General setup -->
Configure standard kernel features ( for small systems) -->
[ ] Enable futex support

我居然把这个取消了,我又一次自以为是了。看到for small systems,我就以为可以全不不选。
但这个 Enable futex support 的帮助里说
Disabling this option resulting kernel may not run glibc-based applications correctly.

作者: bpxyz   发布时间: 2007-01-24

旧的glibc不用futex,因为那时候的内核还没有futex

所以你更应该看看我的这篇文章
http://zh.gentoo-wiki.com/HOWTO_Compile_Kernel
省你很多时间,还不会犯这种错误

作者: zhllg   发布时间: 2007-01-24

引用:
作者: bpxyz
我居然把这个取消了,我又一次自以为是了。看到for small systems,我就以为可以全不不选。
你误解了
这个small system的选项你根本不该打开
这样下面这一系列的选项都是自动设置为y的
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_SHMEM=y
CONFIG_SLAB=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_RT_MUTEXES=y
提供small system的选项,意在让你在构建小系统的时候对上述功能进行取舍,比如slab相对来说比较耗费空间,小系统就可以不用它,而用小巧的slob

作者: zhllg   发布时间: 2007-01-24

http://lwn.net/Articles/157944/
提供一点技术背景,上面这篇文章讲解了slab和slob分别是什么东西

作者: zhllg   发布时间: 2007-01-24

多谢版主

作者: bpxyz   发布时间: 2007-01-27