收藏
回答

微信6.6.5一下的版本,突然大量报出栈溢出错误,求解

问题模块 框架类型 问题类型 操作时间 AppID
管理后台 小游戏 Bug 2018-06-09 wxb781cd09f747d8dc

今天提交了一个新版本,仅仅是修改了游戏内banner广告的展示位置,上线后,突然报出大量栈溢出的错误:Maximum call stack size exceeded


然后通过运维中心的信息仔细研究了下:

1, 这个错误只出现在微信版本低于6.6.5的用户里

2, 此前的游戏版本并没有报出类似的错误,但是这个版本我们的确仅仅只是修改了一下广告的展示位置。


给位大人,这可能是什么原因呢,谢谢~


最后一次编辑于  2018-06-09  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

2 个回答

  • 白开水
    白开水
    2018-06-11

    请问是不是在 BannerAd.onResize 里修改了 BannerAd 的 style ?


    2018-06-11
    赞同
    回复 3
    • 刘昌涛
      刘昌涛
      2018-06-11

      感谢回复,确实修改了style的left和top,目的是为了让广告居中,但是并没有修改width和height呀,代码大致如下:


      ads.setPosition ((this.physicH - ads_w)/2  ,  this.physicH - ads_h) 


      修改left和top是合理的吧


      2018-06-11
      回复
    • 白开水
      白开水
      2018-06-12回复刘昌涛

      可以确认一下封装的 ads.setPosition() 内的逻辑是否有触发 style.width 和 style.height 的修改。

      以及广告组件所在的基础库是针对 6.6.6 下发的。6.6.5 的客户端不能调用广告组件的接口,确认一下是否新版本还做了其他改动,导致了 Maximum call stack size exceeded 的问题。

      2018-06-12
      回复
    • 刘昌涛
      刘昌涛
      2018-06-12回复白开水

      1,很确定,setPosition只修改了left和top, 丝毫 不涉及到width和height的部分,如下 


      setPosition ( x ,  y ){ 

           if  ( !this . _instance ) 

               return 

           // 

           this . _instance . style . left  =  x 

           this . _instance . style . top  =  y 


      2,按照教程,广告组件是在基础库2.0.4开始有的,已经做了SDKVersion >= 2.0.4(伪代码)的判断处理,而且这个错误在更新版本之前并没有出现。 


      3,该版本唯一的修改为:将原来版本里banner广告的宽度调整为教程里要求的最小值:300,并左右居中(大致代码参见上一次回复)。除此之外并无任何修改。 


      4,经过这几天的大量测试和观察,似乎这个错误提示并没有影响游戏的使用。我们自己尽可能的找了各种不同的设备和不同版本的微信测试,都没有发现有实质性的bug(比如卡死,栈溢出的直接表现)出现。 


      5,但是,这个报错仍然在渊源不断过来,每天都快10000条了,我们很紧张。 


      6,我们考虑过使用回退版本的功能,回退到上一个可用的版本。但是这次版本之所以修改的广告尺寸,是因为上一个版本,在部分设备上广告太大,遮挡了游戏元素,严重影响了游戏的操控。 




      2018-06-12
      回复
  • 唐波
    唐波
    2018-06-15

    我怎么在onResize里修改style.top没有效果?

    我是在onResize里获取到高后, 再修改top, 想实现横幅底部对齐, 但是没有任何效果, 横幅并没有移位置的想法.

    2018-06-15
    赞同
    回复 4
    • 刘昌涛
      刘昌涛
      2018-06-15

      应该是可以,你再检查下代码

      你也可以不在onResize里修改top,而是一开始创建banner的时候就给一个top,看看有没有效果

      2018-06-15
      回复
    • 唐波
      唐波
      2018-06-15回复刘昌涛

      我创建banner时已经按最高banner高度计算一个top了, 是有效果的, 在banner较矮时, banner下方到屏幕底部就会有一小段距离, 这时我想按实际高度重新计算一个top, 但是设置没有效果.

      线上已经就这么地了, 不过你实践有效果, 那我再检查下代码吧

      2018-06-15
      回复
    • 唐波
      唐波
      2018-06-15回复刘昌涛

      哈,谢谢, 确实有效果, 不过以前的代码已经删掉了, 也不知道哪里弄错了.

      你的问题, 你可以设置一个flag, 让每次创建banner后修改style的操作只执行一次就应该可以了

      2018-06-15
      回复
    • 刘昌涛
      刘昌涛
      2018-06-15回复唐波

      谢谢,我们的问题不是一个简单的flag可以搞定的(捂脸),正在跟腾讯官方一起查找问题。

      2018-06-15
      回复