51Testing软件测试论坛

标题: 运行loadrunner 场景,报出mmdrv.exe 的错误,内存不能为"writtern" [打印本页]

作者: ljonathan    时间: 2009-6-23 15:07
标题: 运行loadrunner 场景,报出mmdrv.exe 的错误,内存不能为"writtern"
运行loadrunner 场景,报出mmdrv.exe 的错误


[attach]53306[/attach]


说明:
刚刚做200并发的时候,还是运行正常,这回50并发确出错了
脚本中调用了动态库,也用了指针,不过脚本最后都free()了


wsrun32.dll 也放到过bin下了,
内存问题不好搞哦
wsrun32.rar (58.96 KB)
下载次数: 400
2008-11-12 17:20
作者: 云层    时间: 2009-6-23 17:52
系统问题吧?
作者: ljonathan    时间: 2009-6-23 19:19
系统问题吗?
作者: ljonathan    时间: 2009-6-24 01:14
《LR在中文操作系统中可能发生的错误》
http://www.51testing.com/html/23/n-110823.html

传说中的云层老师。。。。。转载很多哦
你所说的系统问题是不是需要装 英文的操作系统呢?
楼上明示哦
您现在使用的是不是英文操作系统哦
打算明天试一试,能解决问题就太感谢了。。。。。。
作者: ljonathan    时间: 2009-6-25 13:48
装了英文的操作系统,还是出错
应该是脚本中用了指针的问题

Action.c(69): Error: C interpreter run time error: Action.c (69):  Error -- memory violation : Exception ACCESS_VIOLATION received.        [MsgId: MERR-19890]
Action.c(69): Notify: CCI trace: Action.c(69): strcpy(0x06ae3120 "", 21451440)
.        [MsgId: MMSG-19891]
Action.c(69): Notify: CCI trace: Compiled_code(0): Action()
.        [MsgId: MMSG-19891]
Action was aborted.        [MsgId: MMSG-10694]
Ending Vuser...        [MsgId: MMSG-15966]

在VuGen中运行,脚本没有问题,在Controller 中并发运行就会出错.....

相关的代码如下:

        char *phone=(char *)malloc(20*sizeof(char));    //手机号11
        char *kind=(char *)malloc(3*sizeof(char));      //类别1  
        char *verifycode =(char *)malloc(8*sizeof(char));   //指针型的手机验证码,做为输入参数使用        8

                     strcpy(phone,"19000012730");    //手机号
        strcpy(kind,"2");                              //业务类别
        strcpy(verifycode,getData(phone,kind));        //   getData(phone,kind) 是delphi写的dll,通过手机号和业务类别,返回验证码
        lr_save_string(verifycode, "myverifycode" );  //变量转参数,下面用到

                  脚本的结尾,我添加了指针释放
                      free(phone);
         free(kind);
        free(verifycode);

斑竹,帮忙看看呃。。。。。。


Notify: CCI trace: Action.c(69): strcpy(0x06ae3120 "", 21451440)
       我看这个错误信息,应该是,dll函数已经返回了验证码:21451440,但拷贝的时候strcpy函数出错了。
    对C指针不熟,帮我分析下。。。谢谢了

---------------------------------------------------------------------
    难道是,不释放。。。。
    释放内存了,反而不能为written
作者: ljonathan    时间: 2009-6-25 13:53
Abnormal termination, caused by mdrv process termination.

Action.c(69): Error: C interpreter run time error: Action.c (69):  Error -- memory violation : Exception ACCESS_VIOLATION received.
作者: ljonathan    时间: 2009-6-29 13:20
目前: 问题没有解决,更换测试工具为JMeter
作者: eramyang    时间: 2009-6-29 14:31
我好像也碰到过这个问题,应该是由于有多个mmdrv.exe进程在运行引起的,你可以在任务管理器里面把所有的mmdrv.exe进程关闭,然后再重开测试脚本。
作者: shanxi    时间: 2009-6-29 14:59
标题: 回复 1# 的帖子
你换用以进程运行,放上你这样运行的结果
作者: ljonathan    时间: 2009-7-7 18:25
我换过用进程运行,大概是200Vuser里仍然有三四十个Vuser会出错
而且用进程的话,CPU占用率超过90%。。

“你可以在任务管理器里面把所有的mmdrv.exe进程关闭,然后再重开测试脚本。”
这样应该会好些,运行场景时,和运行场景前,都会关注 mmdrv.exe进程的

谢谢楼上两位朋友的答复。。。
这个问题,慢慢研究。。。
作者: shanxi    时间: 2009-7-7 18:28
原帖由 ljonathan 于 2009-7-7 18:25 发表
我换过用进程运行,大概是200Vuser里仍然有三四十个Vuser会出错


看来跟 线程安全 无关了。

试试以下改法:
char *phone= NULL;
phone=(char *)malloc(20*sizeof(char));
char *kind=  NULL;
kind=(char *)malloc(3*sizeof(char));
char *verifycode =NULL;
verifycode =(char *)malloc(8*sizeof(char));
   
..........................................

free(phone);
phone= NULL;
free(kind);
kind=  NULL;
free(verifycode);
verifycode =NULL;
=============================================================
程序开始的初始化可有可无。

[ 本帖最后由 shanxi 于 2009-7-7 18:44 编辑 ]
作者: ljonathan    时间: 2009-7-7 18:47
下班了,改天,我再试试用进程运行, 再验证一下,把结果贴出来

还有就是变量设置:select next  row : Unique,貌似这个设置也容易引起问题,把它换成其他的再试试。

继续。。

还有就是逐行注释,是不错的排错方法
作者: 蓝色水滴    时间: 2010-2-23 17:04
在云层老师的贴里,说这个问题在lr9.5上是无法解决的,那除了装英文的操作系统外,还有其它的解决方法吗?
作者: 地铁和人海    时间: 2013-5-21 11:37
急需,怎么不能下载???
作者: swj0618    时间: 2013-6-6 14:26
回复 12# ljonathan


   怎么解决的,,没贴方法么~~~~
作者: 熊猫仙    时间: 2014-5-5 11:08
win7-64中文旗舰版+lp11破解版 在运行测试时遇到同样问题,研究中。。。。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2