Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix crashes when BLE rendezvous disconnects unexpectedly #4413

Merged
merged 2 commits into from
Jan 20, 2021

Conversation

mspang
Copy link
Contributor

@mspang mspang commented Jan 19, 2021

In BLE::OnBleEndPointConnectionClosed, the endpoint is already closed.
We try to close it again in the Transport::BLE destructor, which can crash.
Clear the endpoint in OnBleEndPointConnectionClosed to avoid this case.

In addition, the OnRendezvousError callback in the typical case stops
the rendezvous process which immediately destroys the transport. We
therefore can't call OnRendezvousConnectionClosed afterwards; |this| is
already freed and we just need to return.

In BLE::OnBleEndPointConnectionClosed, the endpoint is already closed.
We try to close it again in the Transport::BLE destructor, causing a
crash.  Clear the endpoint in OnBleEndPointConnectionClosed to avoid
this case.

In addition, the OnRendezvousError callback ends up calling
RendezvousCleanup, which destroys the transport. We therefore cannot
call OnRendezvousConnectionClosed  after OnRendezvousError; |this| was
already freed in OnRendezvousError and we just need to return.
@github-actions
Copy link

Size increase report for "nrfconnect-example-build" from b430c42

File Section File VM
chip-lock.elf shell_root_cmds_sections -8 -8
chip-lock.elf text -8 -8
chip-lighting.elf shell_root_cmds_sections -8 -8
chip-lighting.elf text -8 -8
Full report output
BLOAT REPORT

Files found only in the build output:
    report.csv

Comparing ./master_artifact/chip-lock.elf and ./pull_artifact/chip-lock.elf:

sections,vmsize,filesize
.debug_loc,0,28
.debug_info,0,-1
.debug_line,0,-1
shell_root_cmds_sections,-8,-8
text,-8,-8
.debug_abbrev,0,-10
.debug_frame,0,-16

Comparing ./master_artifact/chip-shell.elf and ./pull_artifact/chip-shell.elf:

sections,vmsize,filesize

Comparing ./master_artifact/chip-lighting.elf and ./pull_artifact/chip-lighting.elf:

sections,vmsize,filesize
.debug_loc,0,28
.debug_info,0,-1
.debug_line,0,-1
shell_root_cmds_sections,-8,-8
text,-8,-8
.debug_abbrev,0,-10
.debug_frame,0,-16


@rwalker-apple rwalker-apple merged commit 29041cf into project-chip:master Jan 20, 2021
@mspang mspang deleted the for-chip/ble-close-crash branch April 2, 2021 00:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants