Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
    • Help
    • Support
    • Submit feedback
    • Contribute to GitLab
  • Sign in
C
connman
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
    • Cycle Analytics
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Charts
  • Labels
  • Merge Requests 10
    • Merge Requests 10
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Charts
  • Commits
  • mer-core
  • connman
  • Merge Requests
  • !311

Merged
Opened Feb 26, 2021 by Jussi Laakkonen@jlaakkonen
  • Report abuse
Report abuse

Fix crashing when removing service caused by double removal via inotify

  • Overview 7
  • Commits 3
  • Changes 1

This addresses the issue of connmand crashing when removing a hidden WiFi service that is caused by getting an inotify for already removed service when the service dir is removed. Simply ignore the inotify for an event that no longer exists in the list.

Backtrace what happens without the fixes:

Thread 1 "connmand" received signal SIGSEGV, Segmentation fault.
0x0007fb64 in __connman_access_service_policy_check (p=0xf7ac60, method=CONNMAN_ACCESS_SERVICE_GET_PROPERTY, arg=0x9c2a0 "Passphrase", sender=0x0,
    default_access=CONNMAN_ACCESS_DENY) at src/access.c:250
250		if (p && p->driver->service_policy_check)
(gdb) bt
0  0x0007fb64 in __connman_access_service_policy_check (p=0xf7ac60, method=CONNMAN_ACCESS_SERVICE_GET_PROPERTY, arg=0x9c2a0 "Passphrase", sender=0x0,
    default_access=CONNMAN_ACCESS_DENY) at src/access.c:250
1  0x00047552 in can_get_property (service=0xf05f30, default_access=<optimized out>, sender=0x0, name=<optimized out>) at src/service.c:3101
2  restricted_string_changed (service=service@entry=0xf05f30, name=<optimized out>, value=value@entry=0x0, default_get_access=<optimized out>) at src/service.c:3142
3  0x0004fbd2 in __connman_service_remove (service=0xf05f30) at src/service.c:5918
4  0x000507cc in __connman_service_unload_services (services=<optimized out>, len=1) at src/service.c:9609
5  0x00064ad8 in storage_inotify_cb (event=0xffaebc74, ident=<optimized out>, user_data=<optimized out>) at src/storage.c:528
6  0x000793f0 in inotify_data (channel=<optimized out>, user_data=<optimized out>, cond=<optimized out>) at src/inotify.c:140
7  0xeb9da982 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
8  0xeb9dabf0 in ?? () from /usr/lib/libglib-2.0.so.0
9  0xeb9dae34 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
10 0x00023982 in main (argc=<optimized out>, argv=<optimized out>) at src/main.c:994
Edited Mar 02, 2021 by Jussi Laakkonen

Check out, review, and merge locally

Step 1. Fetch and check out the branch for this merge request

git fetch "https://git.sailfishos.org/jlaakkonen/connman.git" "jb53294"
git checkout -b "jlaakkonen/connman-jb53294" FETCH_HEAD

Step 2. Review the changes locally

Step 3. Merge the branch and fix any conflicts that come up

git fetch origin
git checkout "origin/master"
git merge --no-ff "jlaakkonen/connman-jb53294"

Step 4. Push the result of the merge to GitLab

git push origin "master"

Note that pushing to GitLab requires write access to this repository.

Tip: You can also checkout merge requests locally by following these guidelines.

Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
0
Labels
None
Assign labels
  • View project labels
Reference: mer-core/connman!311

Revert this merge request

This will create a new commit in order to revert the existing changes.

Switch branch
Cancel
A new branch will be created in your fork and a new merge request will be started.

Cherry-pick this merge request

Switch branch
Cancel
A new branch will be created in your fork and a new merge request will be started.