2020年2月月 发布的文章

服务器端程序无法登录分析

由于实际需要把用户数据中的一个属性值限制范围扩大,仔细看了代码只需要修改宏定义的值,然后重新编译替换到线上即可。结果替换了新版本后,使用管理员工具竟然无法登录,但是线上在服务启动后其他玩家又可以正常登录,大概有一百多人左右。替换成旧的版本,用管理员工具居然又可以登录了,这种理论上根本说不通,很是费解,又回头仔细看了代码,还是觉得不可能是这次修改代码引起的,因为只是修改了一个宏定义的值,其他任何地方都没有修改过。

再次替换成新版本,服务器启动后,一百多玩家正常登录,管理员工具还是无法登录,管理员工具和普通玩家的登录在底层没有任何区别,很是诡异。还是觉得不是新版本的问题,过了一会再次替换成旧版本,这次使用管理员工具也不能登录了,服务器启动后还是有一百多玩家登录上线,同时也有其他玩家反馈无法登录,到这里可以确定不是管理员工具的问题,也不是新版本程序的问题。
阅读剩余部分 –

服务器端程序崩溃分析

写了一个简单的服务器端程序,用于校验用户及下发一些重要数据,用在自己的小软件上运行了好几年一直都很稳定。以前同事写的一个小软件也要用到账号校验及下发数据,给他搭了一套,最初还比较稳定,没怎么出问题,后来时不时的就会崩溃,然后增加了守护进程,当崩溃时自动重启,增加了崩溃时写dump文件。从其中一次崩溃的dump文件中分析是传给数据加密函数的秘钥无效了,此参数从上到下都是引用传递,那唯一可能的是保存此秘钥的用户数据被释放了,结合实际的使用场景,存在大量短时间顶掉已登录账号再次登录的情况,可以确定问题就在这里,前面一次登录完成,正在准备下发数据,结果被后面一次登录给顶掉了,把用户数据释放掉了,导致准备下发数据时的加密函数使用的秘钥参数被释放了,然后程序崩溃。
阅读剩余部分 –

分类目录

文章归档