alibaba / alibaba/flutter_boost
FlutterBoost#instance()单例模式非线程安全导致的空异常
- Dominant language
- Dart
- Stars
- 7.2k
- Forks
- 1.3k
- PR merge metrics
- No merged PRs in 30d
Description
` public static FlutterBoost instance() {
if (sInstance == null) {
sInstance = new FlutterBoost();
}
return sInstance;
}`
由于没有做线程安全处理,导致线上项目报了一个空异常问题
报错堆栈:
`---java.lang.NullPointerException: Attempt to invoke virtual method 'int com.idlefish.flutterboost.g.e()' on a null object reference
at com.idlefish.flutterboost.containers.FlutterActivityAndFragmentDelegate.onAttach(FlutterActivityAndFragmentDelegate.java:82)
at com.idlefish.flutterboost.containers.FlutterFragment.onAttach(FlutterFragment.java:248)
at androidx.fragment.app.Fragment.performAttach(Fragment.java:2574)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:828)
androidx.fragment.app.FragmentTransition.addToFirstInLastOut(FragmentTransition.java:1197)
androidx.fragment.app.FragmentTransition.calculateFragments(FragmentTransition.java:1080)
androidx.fragment.app.FragmentTransition.startTransitions(FragmentTransition.java:119)
`
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by locating FlutterBoost.instance() and reading the call path into FlutterActivityAndFragmentDelegate.onAttach at line 82 and FlutterFragment.onAttach at line 248. Reproduce or reason about concurrent singleton access, then verify that the reported null-reference failure no longer occurs in that path.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- flutter, java
- Domain
- mobile
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100