AsyncTask 多线程并发导致Fatal signal 11 (SIGSEGV)

Kevenshao Kevenshao 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我设置AsyncTask 线程池3个线程并发执行,去异步更新listview的图片,当快速划动listview时,导致force close,不知道如何解决,请遇到此类问题的同仁赐教。

【版本】
Android SDK4.0.3 运行在4.2.2版手机上

【AsyncTask类】
public static final Executor mExec = new ThreadPoolExecutor(3, 200, 1, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>());

class CanvasImageTask extends AsyncTask<Object, Void, Bitmap> {
// .......网络上下载图片并设置
}


【调用】
Object obj[] = new Object[2];
obj[0] = view;
obj[1] = iconUrl;
new CanvasImageTask(true).executeOnExecutor(mExec, obj);


【Log】
D/SurfaceFlinger( 134): requestNextVsync(134)

D/DisplayEventReceiver(19287): rev(0x5c8fe428) w/ vsync, t=501324316513052, id=0, c=7997046

D/SurfaceFlinger( 134): requestNextVsync(19287)

D/InputReader( 556): AP_PROF:AppLaunch_dispatchPtr:Down:501324364

D/SurfaceFlinger( 134): requestNextVsync(134)

I/View (19287): Touch down dispatch to android.widget.ListView{41b1ecd0 VFED.VC. .F....I. 6,6-534,680 #7f0b00a0 app:id/rank_list}, event = MotionEvent { action=ACTION_DOWN, id[0]=0, x[0]=295.44177, y[0]=485.28406, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=501324364, downTime=501324364, deviceId=3, source=0x1002 }

D/AbsListView(19287): Touch down: touch mode = 6,mScrollY = 2,y = 485.28406,mFirstPosition = 663,mActivePointerId = -1,mDataChanged = false,adatper size = 670,this = android.widget.ListView{41b1ecd0 VFED.VC. .F....I. 6,6-534,680 #7f0b00a0 app:id/rank_list}

D/AbsListView(19287): endFling: mScrollY = 2,mTouchMode = 6,mFirstPosition = 663

D/SurfaceFlinger( 134): postEvent(134, v/c=7997049)

D/SurfaceFlinger( 134): postEvent(19287, v/c=7997049)

D/SurfaceFlinger( 134): requestNextVsync(134)

D/SurfaceFlinger( 134): requestNextVsync(134)

D/DisplayEventReceiver(19287): rev(0x5c8fe428) w/ vsync, t=501324372516591, id=0, c=7997049

D/SurfaceFlinger( 134): requestNextVsync(19287)

E/mtk_dlmalloc_debug(19287): [DEBUG_INFO] bug detected at function do_check_inuse_chunk Line 4374

E/mtk_dlmalloc_debug(19287): [DEBUG_INFO]address 60e8bd50 function 1 action 1625865560 structure type 4 error_member 20 mstate 40157c48

E/mtk_dlmalloc_debug(19287):

E/mtk_dlmalloc_debug(19287): ======================== DUMP RUNTIME CHECKING DEBUGGER INFO ========================

E/mtk_dlmalloc_debug(19287): === Error structure Address : 0x60e8bd50

E/mtk_dlmalloc_debug(19287): === Function : dlfree(1)

E/mtk_dlmalloc_debug(19287): === Action : check top(16)

E/mtk_dlmalloc_debug(19287): === structure type : Inuse chunk(0x4)

E/mtk_dlmalloc_debug(19287): === Error member : head_current_free_bit(0x20)

E/mtk_dlmalloc_debug(19287): === GM : 0x40157c48

E/mtk_dlmalloc_debug(19287): === MSTATE : 0x40157c48

E/mtk_dlmalloc_debug(19287): ======================== ANALYZE ERROR TYPES ========================

D/SurfaceFlinger( 134): postEvent(134, v/c=7997050)

D/SurfaceFlinger( 134): postEvent(19287, v/c=7997050)

E/mtk_dlmalloc_debug(19287): [ERROR] Double Free at Chunk 60e8bd50!!!

E/libc_malloc_mtk_debug(19287): No backtrace becasue Debug15 is disable

E/mtk_dlmalloc_debug(19287): ======================== SHOW ERROR STRUCTURE ========================

E/mtk_dlmalloc_debug(19287): === ERROR structure : INUSE CHUNK

E/mtk_dlmalloc_debug(19287): === SHOW CHUNK and error member : 0x20

E/mtk_dlmalloc_debug(19287): === CHUNK address : 0x60e8bd50

E/mtk_dlmalloc_debug(19287): === CHUNK prev_foot : 0x3975a5f1

E/mtk_dlmalloc_debug(19287): === CHUNK size : 896

E/mtk_dlmalloc_debug(19287): === CHUNK MMAPED bit: 0x0

E/mtk_dlmalloc_debug(19287): === CHUNK PRE_CHUNK IN USE: 0x1

E/mtk_dlmalloc_debug(19287): === CHUNK CURRENT CHUNK_IN USE: 0x0

E/mtk_dlmalloc_debug(19287): ^^^^^^^^ wrong current in use bit:

E/mtk_dlmalloc_debug(19287): === CHUNK fencepost bit is : 0x1 (last three bit)

E/mtk_dlmalloc_debug(19287): ======================== SHOW ERROR STRUCTURE END ========================

E/mtk_dlmalloc_debug(19287): ======================== START TO DO CHUNK OVERFLOW DETECTION ========================

E/mtk_dlmalloc_debug(19287): ======================== CHUNK OVERFLOW DETECTION DONE ========================

E/mtk_dlmalloc_debug(19287): ======================== START TO SCAN smallbin, treebin and ALL CHUNKS ========================

E/mtk_dlmalloc_debug(19287): ======================== CHECK ALL CHUNKS DONE ======================

E/mtk_dlmalloc_debug(19287): [DEBUG_INFO] CALL ABORT FUNCTION

F/libc (19287): Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 19395 (pool-1-thread-1)

F/libc (19287): Send stop signal to pid:19287 in debugger_signal_handler

D/AEE/AED ( 126): $===AEE===AEE===AEE===$

D/AEE/AED ( 126): p 0 poll events 1 revents 0

D/AEE/AED ( 126): not know revents:0

D/AEE/AED ( 126): p 1 poll events 1 revents 0

D/AEE/AED ( 126): not know revents:0

D/AEE/AED ( 126): p 2 poll events 1 revents 1

D/AEE/AED ( 126): aed_main_fork_worker: generator 0x3a4168, worker 0xbea7f9f8, recv_fd 15

D/PowerManagerService( 556): userActivityFromNative

D/PowerManagerService( 556): userActivityNoUpdateLocked: eventTime=501324423, event=2, flags=0x0, uid=1000

D/PowerManagerNotifier( 556): onUserActivity: event=2, uid=1000

D/PowerManagerService( 556): updateUserActivitySummaryLocked: mWakefulness=Awake, mUserActivitySummary=0x1, nextTimeout=501377423 (in 52999 ms)

D/PowerManagerService( 556): newScreenState = 2

D/PowerManagerDisplayController( 556): requestPowerState: screenState=2, useProximitySensor=false, forceProximitySensorEnable=false, screenBrightness=65, screenAutoBrightnessAdjustment=0.0, useAutoBrightness=false, useEcoBrightness=false, blockScreenOn=false, waitForNegativeProximity=false

I/PowerManagerService( 556): setBrightness mButtonLight 0.

D/PowerManagerService( 556): updateScreenStateLocked: mDisplayReady=true, newScreenState=2, mWakefulness=1, mWakeLockSummary=0x0, mUserActivitySummary=0x1, mBootCompleted=true

D/AEE/AED ( 126): p 3 poll events 1 revents 0

D/AEE/AED ( 126): not know revents:0

D/AEE/AED ( 126): p 4 poll events 1 revents 0

D/AEE/AED ( 126): not know revents:0

I/DEBUG (19546): handle_request(15)
...全文

相关推荐

基于混合储能协调控制的三相并网逆变系统设计【附说明文档】

内容概要:本文针对含分布式电源的配电网在故障情况下的恢复问题,提出了一种将网络重构、孤岛划分与检修进度统一考虑的多时段优化模型。该模型以最小化网损和甩负荷惩罚为目标,综合考虑节点功率守恒、支路潮流、电压与容量限制、二阶锥松弛以及拓扑连通性等约束条件,利用混合整数二阶锥规划方法进行求解。通过引入虚拟流变量和大常数松弛技术,有效描述了供电片区的连通性与支路开断状态,避免了传统模型中因设置节点归属变量导致的变量规模膨胀问题。模型在IEEE33节点系统上实现了故障后多时段的重构与孤岛运行方案优化,并通过仿真展示了各时段的网络拓扑、电压分布和负荷恢复情况。文章还对模型的建模细节进行了深入评述,指出了当前实现中存在的简化与不足,如无功处理不完善、电压约束未区分失电节点、缺乏储能与开关操作成本等,并提出了相应的改进建议,为后续研究提供了方向。; 适合人群:电力系统自动化、智能电网及相关专业的研究生、科研人员及从事配电网故障恢复、分布式电源集成、优化调度等领域的工程技术人员。; 使用场景及目标:①用于研究含高比例分布式电源的主动配电网在故障条件下的韧性提升策略;②为实现网络重构与孤岛划分的协同优化提供建模参考;③适用于学术论文复现、课题研究建模与电力系统仿真教学;④目标是掌握基于二阶锥松弛与虚拟流的多时段混合整数规划方法在配电网恢复中的应用。; 阅读建议:建议结合文中引用的参考文献(如汤一达等、陈文兴等的研究)对比阅读,深入理解模型的理论渊源;在复现过程中重点关注虚拟流连通性、大常数松弛与二阶锥转换的实现机制;建议在现有模型基础上逐步加入负荷分级、储能动态、分布式电源出力调控等模块,以构建更贴近实际的完整故障恢复系统。

梦想科研社_研学

国央企创新负责人如何利用平台实现创新资源的精准配置与高效联动?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

国央企创新负责人如何提升技术需求挖掘与分析的专业性与准确性?.docx

国央企创新负责人如何提升技术需求挖掘与分析的专业性与准确性?

BIZKEEN

CIM工具450|库位容量与周转率分析器(LED芯片CIM-MES配套)

按库位聚合在库量与容量算利用率、年化周转率,识别超容/低利用/周转偏慢库位与呆滞料清单,给出挪库清库建议。纯Python标准库,含示例数据与中文分析报告,Python 3.8+直接运行。

半导体智能制造 | MES工程师实战笔记

Delphi 13.2控件之DxAutoInstaller-2.1.10.rar

Delphi 13.2控件之DxAutoInstaller_2.1.10.rar

tjsoft
评论 7
收藏 已收藏
分享
返回顶部
Kevenshao
Android 80,489 成员 91,375 内容