Call system_setting_get_* before calling system_setting_set_change_cb#159
Open
JSUYA wants to merge 2 commits intoflutter-tizen:masterfrom
Open
Call system_setting_get_* before calling system_setting_set_change_cb#159JSUYA wants to merge 2 commits intoflutter-tizen:masterfrom
JSUYA wants to merge 2 commits intoflutter-tizen:masterfrom
Conversation
Based on BT, two issues can be expected.
First, a problem could occur in vconf when calling the setting getter while the system is not fully initialized. Alternatively, a deadlock could occur on the same conf when calling the setting getter after registering the changed callback.
Since this issue did not occur after a reboot or subsequent routines, it is likely a timing issue due to the callback rather than an initialization issue. Therefore, the problem can be prevented by calling the setting getter before registering the changed callback.
```
crash dump
(gdb) bt
#0 0x0000ffff94a13524 in __GI___poll (fds=0xfffff49d3830, nfds=1,
timeout=<optimized out>) at ../sysdeps/unix/sysv/linux/poll.c:41
#1 0x0000ffff938f44e8 in ?? () from /lib64/libbuxton2.so.1
flutter-tizen#2 0x0000ffff938f6ac0 in buxton_get_value_sync () from /lib64/libbuxton2.so.1
flutter-tizen#3 0x0000ffff93703af8 in ?? () from /lib64/libvconf.so.0
flutter-tizen#4 0x0000ffff937052c4 in vconf_get_int () from /lib64/libvconf.so.0
flutter-tizen#5 0x0000ffff8c1b9604 in ?? () from /lib64/libcapi-system-system-settings.so.0
flutter-tizen#6 0x0000ffff8c1b390c in system_settings_get_value_int ()
from /lib64/libcapi-system-system-settings.so.0
flutter-tizen#7 0x0000ffff8c2ec3d0 in ?? ()
from /usr/apps/org.tizen.homescreen/bin/../lib/libflutter_tizen_common.so
flutter-tizen#8 0x0000ffff8c2ec330 in ?? ()
from /usr/apps/org.tizen.homescreen/bin/../lib/libflutter_tizen_common.so
flutter-tizen#9 0x0000ffff8c2f538c in ?? ()
from /usr/apps/org.tizen.homescreen/bin/../lib/libflutter_tizen_common.so
flutter-tizen#10 0x0000ffff8c2f3d70 in FlutterDesktopViewCreateFromNewWindow ()
from /usr/apps/org.tizen.homescreen/bin/../lib/libflutter_tizen_common.so
flutter-tizen#11 0x0000ffff94fd8ff4 in ?? () from /usr/apps/org.tizen.homescreen/bin/runner
flutter-tizen#12 0x0000ffff94fd8df0 in ?? () from /usr/apps/org.tizen.homescreen/bin/runner
flutter-tizen#13 0x0000ffff918b3df8 in ?? () from /usr/lib64/libcapi-appfw-application.so.0
flutter-tizen#14 0x0000ffff919efc6c in tizen_cpp::AppCoreBase::Init(int, char**) ()
from /lib64/libapp-core-cpp.so.1
flutter-tizen#15 0x0000ffff919efd24 in tizen_cpp::AppCoreBase::Run(int, char**) ()
from /lib64/libapp-core-cpp.so.1
flutter-tizen#16 0x0000ffff91a34bdc in tizen_cpp::AppCoreUiBase::DoRun(int, char**) ()
from /lib64/libapp-core-ui-cpp.so.1
flutter-tizen#17 0x0000ffff91a34f4c in tizen_cpp::AppCoreUiBase::Impl::Run(int, char**) ()
from /lib64/libapp-core-ui-cpp.so.1
flutter-tizen#18 0x0000ffff918b3fa8 in ui_app_main ()
from /usr/lib64/libcapi-appfw-application.so.0
flutter-tizen#19 0x0000ffff94fd93a0 in ?? () from /usr/apps/org.tizen.homescreen/bin/runner
flutter-tizen#20 0x0000ffff94fd8a8c in main ()
from /usr/apps/org.tizen.homescreen/bin/runner
flutter-tizen#21 0x0000aaaae7065bac in launchpad::loader::LaunchpadLoader::OnTerminate(int, char**) ()
flutter-tizen#22 0x0000ffff94e2a030 in launchpad_loader_main ()
from /lib64/liblaunchpad.so.0
flutter-tizen#23 0x0000aaaae7063b58 in launchpad::loader::LaunchpadLoader::Run() ()
flutter-tizen#24 0x0000aaaae7063500 in main ()
```
There was a problem hiding this comment.
Code Review
This pull request refactors the SettingsChannel to address a potential race condition by fetching initial system settings for time format and font size before registering change notification callbacks. The settings are now cached in member variables, which are updated on initialization and when callbacks are triggered. This change appears to correctly resolve the issue described. My feedback focuses on improving the readability of the newly introduced helper functions to better align with their purpose.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Based on BT, two issues can be expected.
First, a problem could occur in vconf when calling the setting getter while the system is not fully initialized. Alternatively, a deadlock could occur on the same conf when calling the setting getter after registering the changed callback.
Since this issue did not occur after a reboot or subsequent routines, it is likely a timing issue due to the callback rather than an initialization issue. Therefore, the problem can be prevented by calling the setting getter before registering the changed callback.