Skip to content

读写锁容易出现死锁导致ANR #7

@lxzh

Description

@lxzh

"main" prio=5 tid=1 Waiting
| group="main" sCount=1 dsCount=0 flags=1 obj=0x74ffe1f0 self=0xa3ad1000
| sysTid=28165 nice=-10 cgrp=default sched=0/0 handle=0xa7e49494
| state=S schedstat=( 14845404648 2199071798 23355 ) utm=1379 stm=104 core=3 HZ=100
| stack=0xbb59d000-0xbb59f000 stackSize=8MB
| held mutexes=
at java.lang.Object.wait(Native method)

  • waiting on <0x05c5a20f> (a java.lang.Object)
    at java.lang.Thread.parkFor$(Thread.java:2137)
  • locked <0x05c5a20f> (a java.lang.Object)
    at sun.misc.Unsafe.park(Unsafe.java:358)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:868)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:993)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1307)
    at java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:729)
    at com.xxx.fastsharedpreferences.FastSharedPreferences$FspEditor.put(FastSharedPreferences.java:220)
    at comxxx.fastsharedpreferences.FastSharedPreferences$FspEditor.putString(FastSharedPreferences.java:185)
    at com.xxx.fastsharedpreferences.FastSharedPreferences$FspEditor.putString(FastSharedPreferences.java:176)

"ThreadExecutor-10" prio=5 tid=69 Waiting
| group="main" sCount=1 dsCount=0 flags=1 obj=0x138c0220 self=0x7f08cc00
| sysTid=8919 nice=0 cgrp=default sched=0/0 handle=0x80079970
| state=S schedstat=( 2947459 23034500 23 ) utm=0 stm=0 core=1 HZ=100
| stack=0x7ff76000-0x7ff78000 stackSize=1042KB
| held mutexes=
at java.lang.Object.wait(Native method)

  • waiting on <0x086d9300> (a java.lang.Object)
    at java.lang.Thread.parkFor$(Thread.java:2137)
  • locked <0x086d9300> (a java.lang.Object)
    at sun.misc.Unsafe.park(Unsafe.java:358)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:868)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:993)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1307)
    at java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:729)
    at com.xxx.fastsharedpreferences.FastSharedPreferences$FspEditor.put(FastSharedPreferences.java:220)
    at com.xxx.fastsharedpreferences.FastSharedPreferences$FspEditor.putInt(FastSharedPreferences.java:197)
    at com.xxx.fastsharedpreferences.FastSharedPreferences$FspEditor.putInt(FastSharedPreferences.java:176)

"pool-2-thread-4" prio=5 tid=19 Waiting
| group="main" sCount=1 dsCount=0 flags=1 obj=0x12d00ec8 self=0x9c29d800
| sysTid=8750 nice=0 cgrp=default sched=0/0 handle=0x86d8f970
| state=S schedstat=( 688124 2862501 5 ) utm=0 stm=0 core=0 HZ=100
| stack=0x86c8c000-0x86c8e000 stackSize=1042KB
| held mutexes=
at java.lang.Object.wait(Native method)

  • waiting on <0x0455d1e7> (a java.lang.Object)
    at java.lang.Thread.parkFor$(Thread.java:2137)
  • locked <0x0455d1e7> (a java.lang.Object)
    at sun.misc.Unsafe.park(Unsafe.java:358)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:868)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:900)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1223)
    at java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.lock(ReentrantReadWriteLock.java:950)
    at com.fj.smartkit.fastsharedpreferences.FastSharedPreferences$FspEditor$SyncTask.run(FastSharedPreferences.java:274)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:764)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions