dcloudio / dcloudio/uni-app

崩溃

Open
#5,873 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
41.6k
Forks
3.7k
Avg merge
7h 6m
Merged PRs (30d)
6

Description

### 发行方式

App

### 具体平台

iOS

### 开发环境

macOS

### 项目创建方式

HBuilderX

### Vue 版本

vue2

### 依赖版本

### 问题描述

EXC_BAD_ACCESS(SIGSEGV) in [PGNavigator getUiStyle:]
该崩溃是典型的野指针访问(访问已释放内存)。崩溃发生在 _objc_msgSend(Objective-C 消息发送底层函数),说明 PGNavigator 实例已被释放,但后续仍被调用 getUiStyle: 方法。调用栈显示从 Weex 的 JavaScript 线程(WXBridgeManager 创建)发起调用,最终在 PGNavigator.mm 中触发崩溃。

可能原因分析(按可能性排序)
多线程对象生命周期问题(最可能)

PGNavigator 实例在主线程被释放,但 Weex 的 JS 线程仍在访问它(调用栈第 6 帧 -[H5WeexWebview refreshWeex]_block_invoke 运行在 JS 线程)。
依据:EXC_BAD_ACCESS + _objc_msgSend 崩溃模式 + 跨线程调用栈。
对象提前释放

PGNavigator 被弱引用(weak)持有,或未正确强引用,导致被 ARC 提前释放。
依据:崩溃在对象方法调用时发生,且无其他明显异常。
Weex 模块生命周期同步问题

Weex 实例销毁时未清理对 PGNavigator 的引用,JS 线程回调时访问了已销毁的 Native 对象。

### 重现步骤

### 期望行为

修好

### 实际行为

崩溃

### 截图或录屏

Image

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.