发新话题
打印

NetBSD-2.0 Release 下面使用Gftp的问题

NetBSD-2.0 Release 下面使用Gftp的问题

在 NetBSD下使用gftp会发现出现一个有关于pthread的错误(Error detected by libpthread: Unlocking unlocked mutex. Detected by file "/cvs/src/lib/libpthread/pthread_mutex.c", line 345, function "pthread_mutex_unlock". See pthread(3) for information)。这是和NetBSD的系统的运行方式有关的。
即便是从NetBSD的mirror上下来的gftp依然无法正常运行。原因如下:
由于gftp尝试着将一个已经解锁的mutex解锁。这个作法在一些系统上是可以的,但是在NetBSD上这种作法是被禁止的。我认为这正式因为NetBSD的内存和进程等系统管理的十分严格造成的,这种严格性也为NetBSD带来了正体的安全性能。

那么如何解决这个问题?
当然,最为直接的办法就是修改gftp的代码,不过这个还是交给gftp的开发小组完成吧。

我在这里提供一个比较粗糙的解决办法,不妨叫它dirty solution
在运行gftp之前,首先将PTHREAD_DIAGASSERT=A这样,所有有关于pthread的错误都会被libthread忽略。gftp也便可以正常运行了。

这个解决方案是前两天在mailing list上面找到的。

TOP

发新话题