- 主题:请教一个问题
BBS进入杀人游戏立即断线了
然后trace新增记录:
[12/02 22:29:55 21818 3.system] liangqing shm shmget attach error! key = 256a.
此时ipcs
su-2.05b# ipcs -m -u bbs
Shared Memory:
T ID KEY MODE OWNER GROUP
m 65536 0 --rw-rw---- bbs wheel
m 327681 3696 --rw-rw---- bbs wheel
m 65538 0 --rw-rw---- bbs wheel
m 65539 0 --rw-rw---- bbs wheel
m 327684 3693 --rw-rw---- bbs wheel
m 327685 3697 --rw-rw---- bbs wheel
m 327686 4500 --rw-rw---- bbs wheel
m 327688 3700 --rw-rw---- bbs wheel
m 327689 3699 --rw-rw---- bbs wheel
m 262154 3698 --rw-rw---- bbs wheel
m 262155 9013 --rw-rw---- bbs wheel
m 262156 3451 --rw-rw---- bbs wheel
我看了源码,发现killer.c中
shm2=attach_shm("KILLER_SHMKEY", 9578, sizeof(struct inroom_struct)*MAX_ROOM, &i);执行出错。
修改stuff.c的attach_shm1函数,将此时的errno写进日志,发现为12 ENOMEM(Cannot allocate memory),但事实上系统内存还很大(在线1人),不知道为什么会出现这个问题,机器的系统是FreeBSD。
请教一下大家,谢谢啊。
--
修改:liangqing FROM 121.229.7.*
FROM 121.229.7.*
是不是你把MAX_ROOM设置太大了?
这里开了这么多内存sizeof(struct inroom_struct)*MAX_ROOM
【 在 liangqing@newsmth.net-SPAM.no (^-^) 的大作中提到: 】
: BBS进入杀人游戏立即断线了
: 然后trace新增记录:
: [12/02 22:29:55 21818 3.system] liangqing shm shmget attach error! key = 256a.
: 此时ipcs
: su-2.05b# ipcs -m -u bbs
: Shared Memory:
: T ID KEY MODE OWNER GROUP
: m 65536 0 --rw-rw---- bbs wheel
: ...................
--
FROM 202.116.165.*
我没有改killer.c
MAX_ROOM 是100,都是默认的。
#define MAX_ROOM 100
#define MAX_PEOPLE 100
#define MAX_MSG 2000
我后来将出现错误时候的shmsize也写出来,是13562000,而系统对共享内存大小的限制是:
su-2.05b# sysctl kern.ipc.shmmax
kern.ipc.shmmax: 33554432
比13562000要大,所以应该不是系统的限制,如果有限制,错误代号应该为22 EINVAL吧。
这个问题真是头痛啊。。
【 在 stmiles@bbs.scau.edu.cn-SPAM.no (该干嘛干嘛去) 的大作中提到: 】
: 是不是你把MAX_ROOM设置太大了?
: 这里开了这么多内存sizeof(struct inroom_struct)*MAX_ROOM
--
FROM 121.229.5.*