- 主题:miscd killuser出现问题
./miscd killuser
Segmentation fault
不知道为什么, 我这里bbs启动都没有问题,查询用户也没问题,flush也可以,但是就是killuser不行:
Breakpoint 1, main (argc=2, argv=0xbfa342c4) at miscd.c:687
687 if (strcasecmp(argv[1], "killuser") == 0) {
(gdb) n
688 if (resolve_ucache() != 0)
(gdb) n
690 return dokilluser();
(gdb) s
dokilluser () at miscd.c:165
165 newbbslog(BBSLOG_USIES, "Started kill users\n");
(gdb) n
166 apply_users(killauser, NULL);
(gdb) s
apply_users (func=0x804aa62 <killauser>, arg=0x0) at ucache.c:773
773 for(count=0,i=0;i<uidshm->number;i++){
(gdb) n
774 if(func){
(gdb)
775 switch((*func)(&uidshm->passwd[i],arg)){
(gdb)
Program received signal SIGSEGV, Segmentation fault.
0x08059258 in apply_utmp (fptr=0x80598b9 <kickuser_count>, maxcount=0, userid=0xb6a116c4 "sabbath", arg=0xbfa34144)
at utmp.c:555
555 i = utmphead->hashhead[hashkey];
--
FROM 222.171.7.*
我再进一步调试是到了utmp.c
这个是怎么回事呢?共享内存访存冲突?
Breakpoint 4, apply_utmp (fptr=0x80598b9 <kickuser_count>, maxcount=0, userid=0xb6af46c4 "sabbath", arg=0xbfddc4f4)
at utmp.c:553
553 num = 0;
(gdb) n
554 hashkey = utmp_hash(userid);
(gdb)
555 i = utmphead->hashhead[hashkey];
(gdb)
Program received signal SIGSEGV, Segmentation fault.
0x08059258 in apply_utmp (fptr=0x80598b9 <kickuser_count>, maxcount=0, userid=0xb6af46c4 "sabbath", arg=0xbfddc4f4)
at utmp.c:555
555 i = utmphead->hashhead[hashkey];
(gdb) p hashkey
$16 = 9340
(gdb) p utmphead->hashhead[hashkey]
Cannot access memory at address 0xc0f8
【 在 luckwithme (Marvel) 的大作中提到: 】
: ./miscd killuser
: Segmentation fault
: 不知道为什么, 我这里bbs启动都没有问题,查询用户也没问题,flush也可以,但是就是killuser不行:
: ...................
--
FROM 222.171.7.*
这个站点是测试用得,用户数据不一定全,测试用到的几个用户的home和mail都有,其他都没有放进去,不过这个问题应该不大吧
utmp是登录信息,这个怎么会出现这种访问错误呢?
其中
88 #define MAXUSERS 40000
89 #define MAXCLUB 1024
90 #define MAXBOARD 1024
91 #define MAXACTIVE 3000
3000确实比9340大了,但是这是怎么回事呢
【 在 luckwithme (Marvel) 的大作中提到: 】
: 我再进一步调试是到了utmp.c
: 这个是怎么回事呢?共享内存访存冲突?
: Breakpoint 4, apply_utmp (fptr=0x80598b9 <kickuser_count>, maxcount=0, userid=0xb6af46c4 "sabbath", arg=0xbfddc4f4)
: ...................
--
修改:luckwithme FROM 222.171.7.*
FROM 222.171.7.*
【 在 luckwithme (Marvel) 的大作中提到: 】
: 这个站点是测试用得,用户数据不一定全,测试用到的几个用户的home和mail都有,其他都没有放进去,不过这个问题应该不大吧
: utmp是登录信息,这个怎么会出现这种访问错误呢?
: 其中
: 88 #define MAXUSERS 40000
: 89 #define MAXCLUB 1024
: 90 #define MAXBOARD 1024
: 91 #define MAXACTIVE 3000
: 3000确实比9340大了,但是这是怎么回事呢
-_- 问你自己啊 ... 你是从别的正常站挪过来的?
原来什么样?
--
FROM 221.219.11.*
我们站也曾出现过杀人程序中断的情况,忘了当时怎么搞定的了。。
【 在 fancyrabbit (兔兔猫★Initial F★Changing ...) 的大作中提到: 】
: -_- 问你自己啊 ... 你是从别的正常站挪过来的?
: 原来什么样?
--
FROM 123.127.220.*
最可恨的就是这句话...
“忘了当时怎么搞定的了”...
【 在 foxban (未毕业的码农) 的大作中提到: 】
: 我们站也曾出现过杀人程序中断的情况,忘了当时怎么搞定的了。。
--
FROM 121.19.53.*
你改过 MAXACTIVE 么,改过以后有没有全部make; make install然后完全重启动
【 在 luckwithme (Marvel) 的大作中提到: 】
: 这个站点是测试用得,用户数据不一定全,测试用到的几个用户的home和mail都有,其他都没有放进去,不过这个问题应该不大吧
: utmp是登录信息,这个怎么会出现这种访问错误呢?
: 其中
: 88 #define MAXUSERS 40000
: 89 #define MAXCLUB 1024
: 90 #define MAXBOARD 1024
: 91 #define MAXACTIVE 3000
: 3000确实比9340大了,但是这是怎么回事呢
--
FROM 128.12.150.*
没有改过
如何在gdb中attach进程后查看MAXACTIVE的值是多少?呵呵
【 在 atppp (Big Mouse) 的大作中提到: 】
: 你改过 MAXACTIVE 么,改过以后有没有全部make; make install然后完全重启动
--
修改:luckwithme FROM 222.171.7.*
FROM 222.171.7.*
这句话还是很有用的
至少证明能搞定...
【 在 roctall (蛇王阿奔) 的大作中提到: 】
: 最可恨的就是这句话...
: “忘了当时怎么搞定的了”...
--
FROM 218.88.105.*
确实是从smth1.2升级过来的,不过site/xxx.h文件没有动过,一直就是上面的那个
40000/3000,而且以前一切都运行正常,只不过加了SAVELIFE的宏定义,现在准备杀用户,
去掉之后就有问题了……
我找了一下
MAXACTIVE是3000
USHM_SIZE (MAXACTIVE + 10)是3010
UTMP_HASHSIZE (USHM_SIZE*4)是12040>9340应没问题
问题貌似出在这里:
Program received signal SIGSEGV, Segmentation fault.
0x08059258 in apply_utmp (fptr=0x80598b9 <kickuser_count>, maxcount=0, userid=0xb6a7dbf8 "fhm", arg=0xbfde9504)
at utmp.c:555
555 i = utmphead->hashhead[hashkey];
(gdb) p i
$13 = -20
(gdb) p hashkey
$14 = 7383
(gdb) p utmphead->hashhead
Cannot access memory at address 0x2f08
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(gdb) p utmphead
$15 = (struct UTMPHEAD *) 0x0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
hashhead为什么无法访问呢?
【 在 fancyrabbit (兔兔猫★Initial F★Changing ...) 的大作中提到: 】
: 标 题: Re: miscd killuser出现问题
: 发信站: 水木社区 (Thu Feb 28 23:08:39 2008), 转信
:
:
: 【 在 luckwithme (Marvel) 的大作中提到: 】
: : 这个站点是测试用得,用户数据不一定全,测试用到的几个用户的home和mail都有,其他都没有放进去,不过这个问题应该不大吧
: : utmp是登录信息,这个怎么会出现这种访问错误呢?
: : 其中
: : 88 #define MAXUSERS 40000
: : 89 #define MAXCLUB 1024
: : 90 #define MAXBOARD 1024
: : 91 #define MAXACTIVE 3000
: : 3000确实比9340大了,但是这是怎么回事呢
: -_- 问你自己啊 ... 你是从别的正常站挪过来的?
: 原来什么样?
:
: --
:
※ 修改:·luckwithme 于 Feb 29 11:25:50 修改本文·[FROM: 222.171.7.*]
: ※ 来源:·水木社区 newsmth.net·[FROM: 221.219.11.*]
--
修改:luckwithme FROM 222.171.7.*
FROM 222.171.7.*