alibaba / alibaba/flutter_boost

FlutterBoost#instance()单例模式非线程安全导致的空异常

Open
#936 1 comment 0 reactions 0 assignees View on GitHub
Android
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.