gamemaker吧 关注:13,633贴子:95,051

【bug问题研究】关于dll异常的研究过程。。

只看楼主收藏回复

目前还未解决,看上去似乎是一个很有历史的少见难题吗。。


IP属地:重庆来自Android客户端1楼2023-06-14 23:16回复
    情况说明:
    1、游戏使用了外部dll(玉米的增强和小狐狸的中文)
    2、在此前的操作中dll一直正常使用,知道有一天只是写了一个新角色(完全拖拽)之后不知为何出现奇怪的报错,游戏没有使用触发器trigger
    3、在正常运行模式下,报错为镇楼图的trigger event<deleted> Error defineing an external function,未知触发器的错误定义拓展功能
    4、在调试模式下,出现疯狂的弹窗,内容如图,似乎是内存和地址的什么问题


    IP属地:重庆来自Android客户端2楼2023-06-14 23:21
    收起回复
      bug排查
      0、检查dll,放置位置正确,之前也一直可以运行
      1、首先怀疑是经典的系统安全设置阻拦了gm调用外部dll,彻底关闭之,无效
      2、怀疑是不知道什么时候给这个新版本gmk加了保护,于是将其移出电脑,改名换姓再倒回去,无效
      3、打开之前预留的老版本未加入角色的gmk(处于同一目录下),可以正常运行,懵逼了
      4、怀疑是角色什么代码所导致,但是角色只是一个简单的拖拽产物,全部删除后仍然报错,尝试将整个包体的实例全部删除,报错内容变为更奇怪的未知实例创造事件的<deleted>触发器,这个delect不是销毁事件(没有尖括号的destory),感觉像是系统找不到文件所以认为是一个deleted的东西?
      5、尝试删除dll,把dll全部移出后,报错变为正常的不能识别拓展函数,尝试4的方法叠加,全部删除+dll删除=正常,全部删除+dll保留=鬼畜报错(镇楼),全部保留+dll删除=正常报错拓展函数
      6、根据调试模式的报错,怀疑是底层的文件导致dll的问题(但为什么老版本gmk可以。。反正姑且试了试。。),使用另一台电脑打开纯洁的虚拟机调试,仍然报错,报错内容一模一样(指调试模式中的那一串地址)


      IP属地:重庆来自Android客户端3楼2023-06-14 23:32
      回复
        查阅贴吧内容,发现几个比较类似的上古时代问题,其中一个情况一模一样,但是楼主并没有给出结果,根据楼中评论,都指向dll的问题,这个和我的实验相同,但奇怪的是同一目录的老版本的gmk却可以正常运行,也尝试过把两个版本和新装的dll排列组合移来移去,都是一样的结果这似乎又排除了dll损坏的可能。。
        虽然有老版本和新版本的gmk,可以直接回滚来解决,但是还是好奇究竟是什么原因,也害怕治标不治本后期留下隐患,所以发出此贴讨论,也希望能补充一下吧内这个bug的解决途径,不过我自己目前还在研究中。。对于引擎外的底层还是不太了解。。有点头大


        IP属地:重庆来自Android客户端4楼2023-06-14 23:38
        回复
          不过我对gm也了解甚少,对电脑数据原理更是蜻蜓点水,恐怕最后还是会选择回滚版本,这个bug也就成什么千古迷案(?)了。。如果有大佬愿意帮忙一起研究一下原理的话,这里是压缩包内容,除了拓展文件外,有一个旧版本(正常打开)gmk和问题文件(没修改ene版本),不胜感激!


          IP属地:重庆来自Android客户端5楼2023-06-14 23:44
          收起回复
            通过百度网盘分享的文件:bug(1).z…
            链接:网页链接
            提取码:46id
            复制这段内容打开「百度网盘APP 即可获取」


            IP属地:重庆来自Android客户端6楼2023-06-14 23:55
            收起回复
              回滚版本后开始做新角色,居然又出现了同样的bug,这次可真真正正的懵逼了,每一步操作都有确认和备份,现在怀疑是不是obj数量到了上限,先放个问题研究研究再说


              IP属地:重庆来自Android客户端7楼2023-06-18 22:21
              回复
                又要开始穷举法了,让我们来猜猜是哪个大佬的dll忘写obj上限了嘞


                IP属地:重庆来自Android客户端8楼2023-06-18 22:43
                回复
                  希望小狐狸和苞米的dll能挺进决赛圈,我真的离不开他们


                  IP属地:重庆来自Android客户端9楼2023-06-18 22:45
                  回复
                    有点思路,但还没完全确定
                    在此发出呼吁:请听糖豆姐姐的话,不要使用已经没有维护的gm8制作长线大型游戏,更不要乱用dll,指不准哪天就埋了个定时炸弹💣


                    IP属地:重庆来自Android客户端10楼2023-06-18 23:12
                    回复
                      不知道网上的gamemaker8.0的内部代码是不是完全一样的,楼主有没有多下载几个不同下载资源的gamemaker8.0试试,可能是你那个gamemaker8.0的代码问题,对部分的DLL组合(DLL与DLL间)产生了一些诡异的冲突,。


                      IP属地:广东来自Android客户端11楼2023-06-19 06:33
                      回复
                        可能是gamemaker8.0的内部代码功能问题——不知道网上的gamemaker8.0是不是有多种代码版本——高手修改或优化过的,或是官方原版代码的……这些可能是问题根源。
                        还有,DLL与DLL间是否有冲突,产生了崩溃


                        IP属地:广东来自Android客户端12楼2023-06-19 06:38
                        收起回复
                          另外楼主有没有在网上多下载几个gamemaker8.0的软件(不同网站并且大小及压缩包zip名字不一样的),试试用不同网站下载的gamemaker8.0测试你那个有故障的工程,看看那个可以通过(戴上原来的相关DLL时),如果成功了,也可以将对应的版本gamemaker8.0工具资源在在吧里分享一下,方便让大家也用上最稳定的gamemaker8.0版本。


                          IP属地:广东来自Android客户端13楼2023-06-19 18:05
                          回复
                            进行了一个排除法实验,现在的情况是—

                            尝试删去所有实例,这时小狐狸的中文插件成为变量,一旦去掉就可以正常进入房间

                            —在此思路下,在原版中删去所有该dll的函数并卸载dll,报错为(unexpected erro,是不同于gm报错的windows弹窗)

                            —更加纳闷了。。卸完了怎么还报错


                            IP属地:重庆来自Android客户端14楼2023-06-21 22:57
                            回复
                              已锁定问题触发,当有图片的精灵超过260多个时就会触发该bug,同时,经过调试,删除精灵至该数以下后即可正常运行,对此表示疑惑。。我试试不打包dll的话gm8有没有精灵上限


                              IP属地:重庆来自Android客户端16楼2023-06-24 22:02
                              收起回复