HarmonyOS 鸿蒙Next:The specified message queue synchronization barrier token has not been posted or has already been removed.

发布于 1周前 作者 nodeper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next:The specified message queue synchronization barrier token has not been posted or has already been removed.

java.lang.IllegalStateException: The specified message queue synchronization  barrier token has not been posted or has already been removed.
at android.os.MessageQueue.removeSyncBarrier(MessageQueue.java:587)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2160)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8884)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1280)
at android.view.Choreographer.doCallbacks(Choreographer.java:1019)
at android.view.Choreographer.doFrame(Choreographer.java:911)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1248)
at android.os.Handler.handleCallback(Handler.java:900)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:219)
at android.app.ActivityThread.main(ActivityThread.java:8668)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1109)

版本:鸿蒙 Android 10

Top 机型:image.png

此问题全在鸿蒙上,华为机型有少量,其他设备并没有此问题,求一波解答

23 回复
欢迎开发小伙伴们进来帮帮楼主
鸿蒙 Android 10?

上报上来的确实是 Android 10

楼主你好,请具体描述下问题的场景和复现步骤。

线上问题,无具体场景和步骤,问题全在鸿蒙系统上,华为会出现少量,是否在鸿蒙系统上对 message 屏障 有特殊的处理,

您好,请问您解决了吗?最近我也遇到了这个问题。

希望HarmonyOS能继续优化系统稳定性,减少崩溃和重启的情况。

请问有结论了吗

同上,华为崩溃的太多了

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

一样的问题,华为 鸿蒙 Android 10,64 位
鸿蒙官方能否看下这个问题啊 累计上百万次crash了

复现了异常场景: 1、dialog、popupwindow等控件,在展示的时候会调用到ViewRootImpl.addView()方法; 2、该方法内部如果出现异常,如依附的Activity销毁、传入的context不是Activity等,会先调用unscheduleTraversals(),然后抛出异常; 3、unscheduleTraversals() 和 doTraversal() 方法里会做移除消息屏障操作,二者都是线程不安全,如果多线程情况,可能会存在同时删除的操作,可以在子线程执行步骤1; 4、try catch住步骤2抛出的异常,会让crash概率增加,但即使不try catch也有可能导致该crash 。 可以看看各自的业务逻辑里是否存在这样的场景。

请问是如何复现的呢?

多线程高并发下,子线程展示dialog或popupwindow,然后try catch住,同时主线程做UI更新操作,这样会导致多线程下同时执行nscheduleTraversals() 和 doTraversal() 方法

楼主你好,是否在手机上安装了安卓应用才会出现?

是的,在APP的某些场景下复现很高频。无法确认是哪些操作导致的

同样的问题,3月16之前是没有的,3月16号突然大面积爆出来这个crash,每天接近1000的量,全部是华为设备,看下系统都是HarmonyOS,官方能说明下是什么原因么?
同样的问题,目前该崩溃已经上升为崩溃率第一的问题了,参考JeromeLiee回答并未找到原因,仅华为系统有该情况,官方啥时候可以针对性优化一下
我们的APP也有这个崩溃,全部华为鸿蒙,还是请华为的同学重视下吧

感谢您的支持和反馈,已反馈业务侧,我们会不断优化,感谢。

能给个结论吗? 到底什么时候能解决?

针对您提到的HarmonyOS 鸿蒙Next系统中的错误:“The specified message queue synchronization barrier token has not been posted or has already been removed”,这通常表明在消息队列处理中遇到了同步屏障令牌问题。此问题可能由以下几种情况引起:

  1. 令牌未正确发布:在尝试使用同步屏障令牌前,需确保该令牌已被正确创建并发布到消息队列中。

  2. 令牌被提前移除:如果令牌在使用前被其他线程或操作移除,将导致此错误。

  3. 多线程竞态条件:在多线程环境中,如果多个线程同时操作同一个消息队列和同步屏障令牌,可能会引发竞态条件,导致令牌状态异常。

  4. API使用不当:检查是否按照HarmonyOS的API文档正确使用了同步屏障相关的API。

为了解决这个问题,您可以:

  • 仔细审查代码中同步屏障令牌的使用逻辑,确保令牌的正确发布和适时移除。
  • 检查多线程环境下的同步机制,避免竞态条件。
  • 查阅HarmonyOS的最新文档,确认API的使用方法和限制。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部