* [PATCH RESEND] shared/asha: prime volume before starting audio
@ 2026-10-28 13:31 Kyle Pepper
2026-10-28 16:25 ` [RESEND] " bluez.test.bot
2026-11-07 1:01 ` [PATCH v2] " Kyle Pepper
0 siblings, 2 replies; 6+ messages in thread
From: Kyle Pepper @ 2026-10-28 13:31 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Marcel Holtmann, Luiz Augusto von Dentz
Some tested renderers remain silent unless the Volume characteristic is
written before START. Prime it with the selected volume and keep the
write best effort.
Test volume-before-START ordering and best-effort failure handling.
Assisted-by: OpenCode:gpt-6.1-sol
---
Resending unchanged after automated CI PR2665 expiry; no source changes.
Previous submission: https://lore.kernel.org/linux-bluetooth/20261013034613.516771-1-cochcoder@proton.me/
Earlier remote functional, lowercase checkpatch, Codacy Security Scan and
outer-CI failures remain unresolved. Historical local passes do not
establish remote success; no new hardware or functional test is claimed.
Submission review notes (not part of the commit message):
Local validation is for base 7428ca2df9356363079db0f48412c20cbdb9471f.
Compatibility with newer upstream tips has not been verified locally.
N8 startup evidence is from the combined downstream stack, not a
volume-only hardware ablation. Native ordering/failure unit tests are
included; other renderer coverage and human contribution review remain.
.gitignore | 1 +
Makefile.am | 6 +++
src/shared/asha.c | 4 ++
unit/test-asha-start.c | 99 ++++++++++++++++++++++++++++++++++++++++++
4 files changed, 110 insertions(+)
create mode 100644 unit/test-asha-start.c
diff --git a/.gitignore b/.gitignore
index 06b24735df..adff1ea84a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -112,6 +112,7 @@ unit/test-lib
unit/test-mgmt
unit/test-uhid
unit/test-hfp
+unit/test-asha-start
unit/test-crypto
unit/test-ecc
unit/test-hog
diff --git a/Makefile.am b/Makefile.am
index f742458d11..a56d66873b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -706,6 +706,12 @@ unit_test_avrcp_LDADD = lib/libbluetooth-internal.la \
unit_tests += unit/test-hfp
+unit_tests += unit/test-asha-start
+
+unit_test_asha_start_SOURCES = unit/test-asha-start.c
+unit_test_asha_start_LDADD = src/libshared-glib.la \
+ lib/libbluetooth-internal.la $(GLIB_LIBS)
+
unit_test_hfp_SOURCES = unit/test-hfp.c
unit_test_hfp_LDADD = src/libshared-glib.la $(GLIB_LIBS)
diff --git a/src/shared/asha.c b/src/shared/asha.c
index 79bb29bf9a..b5e8d67567 100644
--- a/src/shared/asha.c
+++ b/src/shared/asha.c
@@ -262,6 +262,10 @@ unsigned int bt_asha_start(struct bt_asha *asha, bt_asha_cb_t cb,
return 0;
}
+ /* Some renderers require a Volume write before START. */
+ if (!bt_asha_set_volume(asha, asha->volume))
+ DBG("ASHA volume priming failed, continuing with START");
+
ret = asha_send_acp(asha, acp_start_cmd, sizeof(acp_start_cmd), cb,
user_data);
if (ret < 0)
diff --git a/unit/test-asha-start.c b/unit/test-asha-start.c
new file mode 100644
index 0000000000..49df54c1f3
--- /dev/null
+++ b/unit/test-asha-start.c
@@ -0,0 +1,99 @@
+// SPDX-License-Identifier: LGPL-2.1-or-later
+#include <assert.h>
+
+/* Source-level mocks remain effective with link-time optimization. */
+#define bt_gatt_client_write_without_response test_write_command
+#define bt_gatt_client_write_value test_write_request
+#include "src/shared/asha.c"
+#undef bt_gatt_client_write_without_response
+#undef bt_gatt_client_write_value
+#include "src/shared/tester.h"
+
+static unsigned int commands, requests;
+static bool volume_ok, start_ok;
+static int8_t selected_volume;
+
+void btd_error(uint16_t index, const char *format, ...)
+{
+}
+
+void btd_debug(uint16_t index, const char *format, ...)
+{
+}
+
+unsigned int test_write_command(struct bt_gatt_client *client, uint16_t handle,
+ bool signed_write,
+ const uint8_t *value, uint16_t length)
+{
+ assert(client && handle == 0x82 && !signed_write);
+ assert(length == 1 && (int8_t) value[0] == selected_volume);
+ assert(requests == 0);
+ commands++;
+ return volume_ok;
+}
+
+unsigned int test_write_request(struct bt_gatt_client *client, uint16_t handle,
+ const uint8_t *value, uint16_t length,
+ bt_gatt_client_callback_t callback, void *data,
+ bt_gatt_client_destroy_func_t destroy)
+{
+ assert(client && handle == 0x79);
+ assert(commands == 1 && requests == 0);
+ assert(length == 5 && value[0] == 0x01 && value[1] == 0x01);
+ assert((int8_t) value[3] == selected_volume);
+ assert(callback && data && !destroy);
+ requests++;
+ return start_ok;
+}
+
+static void test_start(const void *user_data)
+{
+ const int8_t volumes[] = { -128, -127, -64, 0 };
+ unsigned int i, fail;
+
+ for (i = 0; i < ARRAY_SIZE(volumes); i++) {
+ for (fail = 0; fail < 2; fail++) {
+ struct bt_asha asha = {
+ .client = (void *) 1, .acp_handle = 0x79,
+ .volume_handle = 0x82, .volume = volumes[i],
+ };
+
+ selected_volume = volumes[i];
+ commands = requests = 0;
+ volume_ok = !fail;
+ start_ok = true;
+ assert(bt_asha_start(&asha, NULL, NULL) == 0);
+ assert(commands == 1 && requests == 1);
+ assert(asha.state == ASHA_STARTING);
+ assert(asha.volume == selected_volume);
+
+ /* A repeated start must not write the volume again. */
+ bt_asha_start(&asha, NULL, NULL);
+ assert(commands == 1 && requests == 1);
+ }
+ }
+
+ {
+ struct bt_asha asha = {
+ .client = (void *) 1, .acp_handle = 0x79,
+ .volume_handle = 0x82, .volume = -64,
+ };
+
+ commands = requests = 0;
+ selected_volume = asha.volume;
+ volume_ok = true;
+ start_ok = false;
+ assert(bt_asha_start(&asha, NULL, NULL) == (unsigned int) -1);
+ assert(asha.state == ASHA_STOPPED);
+ assert(commands == 1 && requests == 1);
+ }
+
+ tester_test_passed();
+}
+
+int main(int argc, char *argv[])
+{
+ tester_init(&argc, &argv);
+ tester_add("ASHA/start/volume", NULL, NULL, test_start, NULL);
+ return tester_run();
+}
base-commit: 7428ca2df9356363079db0f48412c20cbdb9471f
^ permalink raw reply related [flat|nested] 6+ messages in thread
* RE: [RESEND] shared/asha: prime volume before starting audio
2026-10-28 13:31 [PATCH RESEND] shared/asha: prime volume before starting audio Kyle Pepper
@ 2026-10-28 16:25 ` bluez.test.bot
2026-11-07 1:01 ` [PATCH v2] " Kyle Pepper
1 sibling, 0 replies; 6+ messages in thread
From: bluez.test.bot @ 2026-10-28 16:25 UTC (permalink / raw)
To: linux-bluetooth, cochcoder
[-- Attachment #1: Type: text/plain, Size: 1022 bytes --]
This is automated email and please do not reply to this email!
Dear submitter,
Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/series/1195451/
---Test result---
Test Summary:
CheckPatch PASS 0.57 seconds
GitLint PASS 0.34 seconds
BuildEll PASS 20.52 seconds
BluezMake PASS 302.95 seconds
MakeCheck PASS 14.47 seconds
MakeDistcheck PASS 150.15 seconds
CheckValgrind PASS 242.31 seconds
CheckSmatch PASS 300.28 seconds
bluezmakeextell PASS 99.29 seconds
TestFunctional PASS 1171.55 seconds
IncrementalBuild PASS 310.32 seconds
ScanBuild PASS 1165.65 seconds
https://github.com/bluez/bluez/pull/2728
---
Regards,
Linux Bluetooth
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2] shared/asha: prime volume before starting audio
2026-10-28 13:31 [PATCH RESEND] shared/asha: prime volume before starting audio Kyle Pepper
2026-10-28 16:25 ` [RESEND] " bluez.test.bot
@ 2026-11-07 1:01 ` Kyle Pepper
2026-11-07 2:51 ` [v2] " bluez.test.bot
` (2 more replies)
1 sibling, 3 replies; 6+ messages in thread
From: Kyle Pepper @ 2026-11-07 1:01 UTC (permalink / raw)
To: linux-bluetooth; +Cc: marcel, luiz.von.dentz
Prime the Volume characteristic with the cached volume before START so
both volume inputs are initialized when audio starts. Keep the write
best effort so a rejected volume write does not prevent START.
Assisted-by: OpenCode:gpt-6.1-sol
Assisted-by: Codex:gpt-6
---
v2: Drop the standalone mock test and redundant failure log.
Previous version:
https://lore.kernel.org/linux-bluetooth/20261028133131.262033-1-cochcoder@proton.me/
The unchanged local harness rejects baseline and passes this version,
including ASan/UBSan and LTO checks. Full make check is blocked by an SDP
debug-symbol linker failure also reproduced on unchanged upstream.
No volume-only hardware ablation or new remote CI result is claimed.
src/shared/asha.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/shared/asha.c b/src/shared/asha.c
index 79bb29bf9a..6310a8357d 100644
--- a/src/shared/asha.c
+++ b/src/shared/asha.c
@@ -262,6 +262,9 @@ unsigned int bt_asha_start(struct bt_asha *asha, bt_asha_cb_t cb,
return 0;
}
+ /* Some renderers require a Volume write before START. */
+ bt_asha_set_volume(asha, asha->volume);
+
ret = asha_send_acp(asha, acp_start_cmd, sizeof(acp_start_cmd), cb,
user_data);
if (ret < 0)
base-commit: a8067198717b38391ca183ed7f41a69ec4b81b6e
--
2.56.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* RE: [v2] shared/asha: prime volume before starting audio
2026-11-07 1:01 ` [PATCH v2] " Kyle Pepper
@ 2026-11-07 2:51 ` bluez.test.bot
2026-11-07 7:02 ` [PATCH v2] " cochcoder
2026-11-10 22:00 ` patchwork-bot+bluetooth
2 siblings, 0 replies; 6+ messages in thread
From: bluez.test.bot @ 2026-11-07 2:51 UTC (permalink / raw)
To: linux-bluetooth, cochcoder
[-- Attachment #1: Type: text/plain, Size: 54883 bytes --]
This is automated email and please do not reply to this email!
Dear submitter,
Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/series/1204661/
---Test result---
Test Summary:
CheckPatch PASS 0.27 seconds
GitLint PASS 0.25 seconds
BuildEll PASS 20.38 seconds
BluezMake PASS 307.45 seconds
CheckSmatch PASS 300.40 seconds
bluezmakeextell PASS 97.72 seconds
TestFunctional FAIL 1196.06 seconds
IncrementalBuild PASS 304.70 seconds
ScanBuild PASS 1157.62 seconds
Details
##############################
Test: TestFunctional - FAIL
Desc: Run test-functional
Output:
FAIL functional.test_bearer::test_bearer_le_conn_update[hosts14-vm2]: failed on teardown with "pytest_bluezenv.plugin.CoredumpWarning: Core dump: test-bluezenv-hosts14.1-bluetoothd-1794018152-190.core
/usr/bin/gdb: warning: Couldn't determine a path for the index cache directory.
[New LWP 190]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/home/runner/work/bluez/bluez/src/src/src/bluetoothd --nodetach -f /run/bluetoo'.
Program terminated with signal SIGABRT, Aborted.
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=6, no_tid=0) at ./nptl/pthread_kill.c:44
warning: 44 ./nptl/pthread_kill.c: No such file or directory
Thread 1 (Thread 0x7f6db6696900 (LWP 190)):
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=6, no_tid=0) at ./nptl/pthread_kill.c:44
tid = <optimized out>
ret = 0
pd = <optimized out>
old_mask = {__val = {4412750543122677053}}
ret = <optimized out>
#1 __pthread_kill_internal (threadid=<optimized out>, signo=6) at ./nptl/pthread_kill.c:89
No locals.
#2 __GI___pthread_kill (threadid=<optimized out>, signo=signo@entry=6) at ./nptl/pthread_kill.c:100
No locals.
#3 0x00007f6db6df1b7e in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
ret = <optimized out>
#4 0x00007f6db6dd48ec in __GI_abort () at ./stdlib/abort.c:77
act = {__sigaction_handler = {sa_handler = 0x0, sa_sigaction = 0x0}, sa_mask = {__val = {0, 135711104700064, 2008261394292685056, 140726988249664, 140726988249952, 140726988249808, 22, 140109193141200, 0, 140726988249744, 140109209986582, 140109180297216, 4096, 0, 2008261394292685056, 140109184479256}}, sa_flags = -1206792192, sa_restorer = 0x16}
#5 0x00007f6db79fca0f in __sanitizer::Abort () at ../../../../src/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp:165
No locals.
#6 0x00007f6db7b22c2d in __sanitizer::Die () at ../../../../src/libsanitizer/sanitizer_common/sanitizer_termination.cpp:58
No locals.
#7 0x00007f6db7af793c in __asan::ScopedInErrorReport::~ScopedInErrorReport (this=0x7ffd8e251c06) at ../../../../src/libsanitizer/asan/asan_report.cpp:221
buffer_copy = {buffer_ = {<__sanitizer::InternalMmapVectorNoCtor<char, false>> = {data_ = 0x7b6db0960000 '=' <repeats 65 times>, "\n==190==ERROR: AddressSanitizer: heap-use-after-free on address 0x7c7db5ae1720 at pc 0x55a69164cbcd bp 0x7ffd8e252880 sp 0x7ffd8e252870"..., capacity_bytes_ = 8192, size_ = 4282}, <No data fields>}}
buffer_copy = <optimized out>
l = <optimized out>
#8 0x00007f6db7af6e02 in __asan::ReportGenericError (pc=94173892234189, bp=140726988253312, sp=sp@entry=140726988253296, addr=136879360841504, is_write=is_write@entry=false, access_size=8, fatal=true, exp=<optimized out>) at ../../../../src/libsanitizer/asan/asan_report.cpp:536
in_report = {error_report_lock_ = {<No data fields>}, static current_error_ = {kind = __asan::kErrorKindGeneric, {Base = {scariness = {score = 51, descr = "8-byte-read-heap-use-after-free\000\000\000\000\000\305,\260\267m\177\000\000\240\177\256\265\315{\000\000:\000\000\000\000\000\000\000\200\177\256\265\315{\000\000\220\177\256\265\315{\000\000\360\034%\216\375\177\000\000\005\214\244\267m\177\000\000P\n\261\264m{\000\000\000\000.\266m\177\000\000\001\000\000\000\000\000\000\000\001\000\000\000\246\000\001\001\000\000\000\000\000\000\000\000\370\377\377\377\377\377\377\377\332\177\256\265\315{\000\0000\035%\216\375\177\000\000\001\000\000\000\000\000\000\000:\000\000\000\000\000\000\000\000@\245\215\375\177\000\000:\000\000\000\000\000\000\000 E\217\264m{\000\0009\000\000\000"...}, tid = 0}, DeadlySignal = {<__asan::ErrorBase> = {scariness = {score = 51, descr = "8-byte-read-heap-use-after-free\000\000\000\000\000\305,\260\267m\177\000\000\240\177\256\265\315{\000\000:\000\000\000\000\000\000\000\200\177\256\265\315{\000\000\220\177\256\265\315{\000\000\360\034%\216\375\177\000\000\005\214\244\267m\177\000\000P\n\261\264m{\000\000\000\000.\266m\177\000\000\001\000\000\000\000\000\000\000\001\000\000\000\246\000\001\001\000\000\000\000\000\000\000\000\370\377\377\377\377\377\377\377\332\177\256\265\315{\000\0000\035%\216\375\177\000\000\001\000\000\000\000\000\000\000:\000\000\000\000\000\000\000\000@\245\215\375\177\000\000:\000\000\000\000\000\000\000 E\217\264m{\000\0009\000\000\000"...}, tid = 0}, signal = {siginfo = 0x1bdec71900000002, context = 0x7c7db5ae1720, addr = 0, pc = 0, sp = 6158983102920, bp = 136879360841504, is_memory_access = 96, write_flag = __sanitizer::SignalContext::Unknown, is_true_faulting_addr = 192}}, DoubleFree = {<__asan::ErrorBase> = {scariness = {score = 51, descr = "8-byte-read-heap-use-after-free\000\000\000\000\000\305,\260\267m\177\000\000\240\177\256\265\315{\000\000:\000\000\000\000\000\000\000\200\177\256\265\315{\000\000\220\177\256\265\315{\000\000\360\034%\216\375\177\000\000\005\214\244\267m\177\000\000P\n\261\264m{\000\000\000\000.\266m\177\000\000\001\000\000\000\000\000\000\000\001\000\000\000\246\000\001\001\000\000\000\000\000\000\000\000\370\377\377\377\377\377\377\377\332\177\256\265\315{\000\0000\035%\216\375\177\000\000\001\000\000\000\000\000\000\000:\000\000\000\000\000\000\000\000@\245\215\375\177\000\000:\000\000\000\000\000\000\000 E\217\264m{\000\0009\000\000\000"...}, tid = 0}, second_free_stack = 0x1bdec71900000002, addr_description = {addr = 136879360841504, alloc_tid = 0, free_tid = 0, alloc_stack_id = 456, free_stack_id = 1434, chunk_access = {bad_addr = 136879360841504, offset = 96, chunk_begin = 136879360841408, chunk_size = 232, user_requested_alignment = 8, access_type = 2, alloc_type = 1}}}, NewDeleteTypeMismatch = {<__asan::ErrorBase> = {scariness = {score = 51, descr = "8-byte-read-heap-use-after-free\000\000\000\000\000\305,\260\267m\177\000\000\240\177\256\265\315{\000\000:\000\000\000\000\000\000\000\200\177\256\265\315{\000\000\220\177\256\265\315{\000\000\360\034%\216\375\177\000\000\005\214\244\267m\177\000\000P\n\261\264m{\000\000\000\000.\266m\177\000\000\001\000\000\000\000\000\000\000\001\000\000\000\246\000\001\001\000\000\000\000\000\000\000\000\370\377\377\377\377\377\377\377\332\177\256\265\315{\000\0000\035%\216\375\177\000\000\001\000\000\000\000\000\000\000:\000\000\000\000\000\000\000\000@\245\215\375\177\000\000:\000\000\000\000\000\000\000 E\217\264m{\000\0009\000\000\000"...}, tid = 0}, free_stack = 0x1bdec71900000002, addr_description = {addr = 136879360841504, alloc_tid = 0, free_tid = 0, alloc_stack_id = 456, free_stack_id = 1434, chunk_access = {bad_addr = 136879360841504, offset = 96, chunk_begin = 136879360841408, chunk_size = 232, user_requested_alignment = 8, access_type = 2, alloc_type = 1}}, delete_size = 140109181639104, delete_alignment = 140726988251408}, FreeNotMalloced = {<__asan::ErrorBase> = {scariness = {score = 51, descr = "8-byte-read-heap-use-after-free\000\000\000\000\000\305,\260\267m\177\000\000\240\177\256\265\315{\000\000:\000\000\000\000\000\000\000\200\177\256\265\315{\000\000\220\177\256\265\315{\000\000\360\034%\216\375\177\000\000\005\214\244\267m\177\000\000P\n\261\264m{\000\000\000\000.\266m\177\000\000\001\000\000\000\000\000\000\000\001\000\000\000\246\000\001\001\000\000\000\000\000\000\000\000\370\377\377\377\377\377\377\377\332\177\256\265\315{\000\0000\035%\216\375\177\000\000\001\000\000\000\000\000\000\000:\000\000\000\000\000\000\000\000@\245\215\375\177\000\000:\000\000\000\000\000\000\000 E\217\264m{\000\0009\000\000\000"...}, tid = 0}, free_stack = 0x1bdec71900000002, addr_description = {data = {kind = 3048085280, {shadow = {addr = 0, kind = __asan::kShadowKindLow, shadow_byte = 0 '\000'}, heap = {addr = 0, alloc_tid = 0, free_tid = 6158983102920, alloc_stack_id = 3048085280, free_stack_id = 31869, chunk_access = {bad_addr = 96, offset = 136879360841408, chunk_begin = 232, chunk_size = 140724603478024, user_requested_alignment = 2496, access_type = 1, alloc_type = 1}}, stack = {addr = 0, tid = 0, offset = 6158983102920, frame_pc = 136879360841504, access_size = 96, frame_descr = 0x7c7db5ae16c0 "\232\005"}, global = {addr = 0, static kMaxGlobals = 4, globals = {{beg = 0, size = 6158983102920, size_with_redzone = 136879360841504, name = 0x60 <error: Cannot access memory at address 0x60>, module_name = 0x7c7db5ae16c0 "\232\005", has_dynamic_init = 232, gcc_location = 0x7ffd00006008, odr_indicator = 140109181639104}, {beg = 140726988251408, size = 2, size_with_redzone = 140109210554304, name = 0x7c4db5ae0b90 "\003\021", module_name = 0x7ffd8e2520e0 "0)%\216\375\177", has_dynamic_init = 140109208905528, gcc_location = 0xa0, odr_indicator = 136673202408336}, {beg = 140109184630992, size = 140726988251392, size_with_redzone = 136673202408352, name = 0x55a691561570 <device_free> "\363\017\036\372USH\211\373H\203\354\030H\205\377\017\204-\n", module_name = 0x7ffd8e252a10 "", has_dynamic_init = 135711109795808, gcc_location = 0x7ffd8e252930, odr_indicator = 140109209834433}, {beg = 140726988251392, size = 131918767746, size_with_redzone = 140726988251408, name = 0x2 <error: Cannot access memory at address 0x2>, module_name = 0x7f6db7ae9400 <___interceptor_free(void*)+176> "D\213\215\314\367\377\377E\205\311t4H\211m\330A\203\371\001tzE\017\276\3061\311H\211\352H\211\306H\215\275\320\367\377\377\3502\026\001", has_dynamic_init = 94173891182184, gcc_location = 0x7ffd8e252910, odr_indicator = 140726988253216}}, reg_sites = {3069955552, 32621, 3068779363, 32621}, access_size = 1, size = 205 '\315'}, wild = {addr = 0, access_size = 0}}}}}, AllocTypeMismatch = {<__asan::ErrorBase> = {scariness = {score = 51, descr = "8-byte-read-heap-use-after-free\000\000\000\000\000\305,\260\267m\177\000\000\240\177\256\265\315{\000\000:\000\000\000\000\000\000\000\200\177\256\265\315{\000\000\220\177\256\265\315{\000\000\360\034%\216\375\177\000\000\005\214\244\267m\177\000\000P\n\261\264m{\000\000\000\000.\266m\177\000\000\001\000\000\000\000\000\000\000\001\000\000\000\246\000\001\001\000\000\000\000\000\000\000\000\370\377\377\377\377\377\377\377\332\177\256\265\315{\000\0000\035%\216\375\177\000\000\001\000\000\000\000\000\000\000:\000\000\000\000\000\000\000\000@\245\215\375\177\000\000:\000\000\000\000\000\000\000 E\217\264m{\000\0009\000\000\000"...}, tid = 0}, dealloc_stack = 0x1bdec71900000002, alloc_type = 3048085280, dealloc_type = 31869, addr_description = {data = {kind = __asan::kAddressKindWild, {shadow = {addr = 0, kind = (unknown: 0xc8), shadow_byte = 1 '\001'}, heap = {addr = 0, alloc_tid = 6158983102920, free_tid = 136879360841504, alloc_stack_id = 96, free_stack_id = 0, chunk_access = {bad_addr = 136879360841408, offset = 232, chunk_begin = 140724603478024, chunk_size = 140109181639104, user_requested_alignment = 272, access_type = 2, alloc_type = 0}}, stack = {addr = 0, tid = 6158983102920, offset = 136879360841504, frame_pc = 96, access_size = 136879360841408, frame_descr = 0xe8 <error: Cannot access memory at address 0xe8>}, global = {addr = 0, static kMaxGlobals = 4, globals = {{beg = 6158983102920, size = 136879360841504, size_with_redzone = 96, name = 0x7c7db5ae16c0 "\232\005", module_name = 0xe8 <error: Cannot access memory at address 0xe8>, has_dynamic_init = 140724603478024, gcc_location = 0x7f6db60059c0, odr_indicator = 140726988251408}, {beg = 2, size = 140109210554304, size_with_redzone = 136673202408336, name = 0x7ffd8e2520e0 "0)%\216\375\177", module_name = 0x7f6db7a06738 <__sanitizer::Quarantine<__asan::QuarantineCallback, __asan::AsanChunk>::Put(__sanitizer::QuarantineCache<__asan::QuarantineCallback>*, __asan::QuarantineCallback, __asan::AsanChunk*, unsigned long)+248> "H\203;", has_dynamic_init = 160, gcc_location = 0x7c4db5ae0b90, odr_indicator = 140109184630992}, {beg = 140726988251392, size = 136673202408352, size_with_redzone = 94173891270000, name = 0x7ffd8e252a10 "", module_name = 0x7b6db47dcfe0 "pU\256\265\335{", has_dynamic_init = 140726988253488, gcc_location = 0x7f6db7ae93c1 <___interceptor_free(void*)+113>, odr_indicator = 140726988251392}, {beg = 131918767746, size = 140726988251408, size_with_redzone = 2, name = 0x7f6db7ae9400 <___interceptor_free(void*)+176> "D\213\215\314\367\377\377E\205\311t4H\211m\330A\203\371\001tzE\017\276\3061\311H\211\352H\211\306H\215\275\320\367\377\377\3502\026\001", module_name = 0x55a69154be68 <gatt_server_cleanup+200> "H\205\333t{\366\303\auvH\211\350H\301\350\003\200\270", has_dynamic_init = 140726988253456, gcc_location = 0x7ffd8e252820, odr_indicator = 140109198118368}}, reg_sites = {3068779363, 32621, 1, 0}, access_size = 94173892234189, size = 128 '\200'}, wild = {addr = 0, access_size = 6158983102920}}}}}, MallocUsableSizeNotOwned = {<__asan::ErrorBase> = {scariness = {score = 51, descr = "8-byte-read-heap-use-after-free\000\000\000\000\000\305,\260\267m\177\000\000\240\177\256\265\315{\000\000:\000\000\000\000\000\000\000\200\177\256\265\315{\000\000\220\177\256\265\315{\000\000\360\034%\216\375\177\000\000\005\214\244\267m\177\000\000P\n\261\264m{\000\000\000\000.\266m\177\000\000\001\000\000\000\000\000\000\000\001\000\000\000\246\000\001\001\000\000\000\000\000\000\000\000\370\377\377\377\377\377\377\377\332\177\256\265\315{\000\0000\035%\216\375\177\000\000\001\000\000\000\000\000\000\000:\000\000\000\000\000\000\000\000@\245\215\375\177\000\000:\000\000\000\000\000\000\000 E\217\264m{\000\0009\000\000\000"...}, tid = 0}, stack = 0x1bdec71900000002, addr_description = {data = {kind = 3048085280, {shadow = {addr = 0, kind = __asan::kShadowKindLow, shadow_byte = 0 '\000'}, heap = {addr = 0, alloc_tid = 0, free_tid = 6158983102920, alloc_stack_id = 3048085280, free_stack_id = 31869, chunk_access = {bad_addr = 96, offset = 136879360841408, chunk_begin = 232, chunk_size = 140724603478024, user_requested_alignment = 2496, access_type = 1, alloc_type = 1}}, stack = {addr = 0, tid = 0, offset = 6158983102920, frame_pc = 136879360841504, access_size = 96, frame_descr = 0x7c7db5ae16c0 "\232\005"}, global = {addr = 0, static kMaxGlobals = 4, globals = {{beg = 0, size = 6158983102920, size_with_redzone = 136879360841504, name = 0x60 <error: Cannot access memory at address 0x60>, module_name = 0x7c7db5ae16c0 "\232\005", has_dynamic_init = 232, gcc_location = 0x7ffd00006008, odr_indicator = 140109181639104}, {beg = 140726988251408, size = 2, size_with_redzone = 140109210554304, name = 0x7c4db5ae0b90 "\003\021", module_name = 0x7ffd8e2520e0 "0)%\216\375\177", has_dynamic_init = 140109208905528, gcc_location = 0xa0, odr_indicator = 136673202408336}, {beg = 140109184630992, size = 140726988251392, size_with_redzone = 136673202408352, name = 0x55a691561570 <device_free> "\363\017\036\372USH\211\373H\203\354\030H\205\377\017\204-\n", module_name = 0x7ffd8e252a10 "", has_dynamic_init = 135711109795808, gcc_location = 0x7ffd8e252930, odr_indicator = 140109209834433}, {beg = 140726988251392, size = 131918767746, size_with_redzone = 140726988251408, name = 0x2 <error: Cannot access memory at address 0x2>, module_name = 0x7f6db7ae9400 <___interceptor_free(void*)+176> "D\213\215\314\367\377\377E\205\311t4H\211m\330A\203\371\001tzE\017\276\3061\311H\211\352H\211\306H\215\275\320\367\377\377\3502\026\001", has_dynamic_init = 94173891182184, gcc_location = 0x7ffd8e252910, odr_indicator = 140726988253216}}, reg_sites = {3069955552, 32621, 3068779363, 32621}, access_size = 1, size = 205 '\315'}, wild = {addr = 0, access_size = 0}}}}}, SanitizerGetAllocatedSizeNotOwned = {<__asan::ErrorBase> = {scariness = {score = 51, descr = "8-byte-read-heap-use-after-free\000\000\000\000\000\305,\260\267m\177\000\000\240\177\256\265\315{\000\000:\000\000\000\000\000\000\000\200\177\256\265\315{\000\000\220\177\256\265\315{\000\000\360\034%\216\375\177\000\000\005\214\244\267m\177\000\000P\n\261\264m{\000\000\000\000.\266m\177\000\000\001\000\000\000\000\000\000\000\001\000\000\000\246\000\001\001\000\000\000\000\000\000\000\000\370\377\377\377\377\377\377\377\332\177\256\265\315{\000\0000\035%\216\375\177\000\000\001\000\000\000\000\000\000\000:\000\000\000\000\000\000\000\000@\245\215\375\177\000\000:\000\000\000\000\000\000\000 E\217\264m{\000\0009\000\000\000"...}, tid = 0}, stack = 0x1bdec71900000002, addr_description = {data = {kind = 3048085280, {shadow = {addr = 0, kind = __asan::kShadowKindLow, shadow_byte = 0 '\000'}, heap = {addr = 0, alloc_tid = 0, free_tid = 6158983102920, alloc_stack_id = 3048085280, free_stack_id = 31869, chunk_access = {bad_addr = 96, offset = 136879360841408, chunk_begin = 232, chunk_size = 140724603478024, user_requested_alignment = 2496, access_type = 1, alloc_type = 1}}, stack = {addr = 0, tid = 0, offset = 6158983102920, frame_pc = 136879360841504, access_size = 96, frame_descr = 0x7c7db5ae16c0 "\232\005"}, global = {addr = 0, static kMaxGlobals = 4, globals = {{beg = 0, size = 6158983102920, size_with_redzone = 136879360841504, name = 0x60 <error: Cannot access memory at address 0x60>, module_name = 0x7c7db5ae16c0 "\232\005", has_dynamic_init = 232, gcc_location = 0x7ffd00006008, odr_indicator = 140109181639104}, {beg = 140726988251408, size = 2, size_with_redzone = 140109210554304, name = 0x7c4db5ae0b90 "\003\021", module_name = 0x7ffd8e2520e0 "0)%\216\375\177", has_dynamic_init = 140109208905528, gcc_location = 0xa0, odr_indicator = 136673202408336}, {beg = 140109184630992, size = 140726988251392, size_with_redzone = 136673202408352, name = 0x55a691561570 <device_free> "\363\017\036\372USH\211\373H\203\354\030H\205\377\017\204-\n", module_name = 0x7ffd8e252a10 "", has_dynamic_init = 135711109795808, gcc_location = 0x7ffd8e252930, odr_indicator = 140109209834433}, {beg = 140726988251392, size = 131918767746, size_with_redzone = 140726988251408, name = 0x2 <error: Cannot access memory at address 0x2>, module_name = 0x7f6db7ae9400 <___interceptor_free(void*)+176> "D\213\215\314\367\377\377E\205\311t4H\211m\330A\203\371\001tzE\017\276\3061\311H\211\352H\211\306H\215\275\320\367\377\377\3502\026\001", has_dynamic_init = 94173891182184, gcc_location = 0x7ffd8e252910, odr_indicator = 140726988253216}}, reg_sites = {3069955552, 32621, 3068779363, 32621}, access_size = 1, size = 205 '\315'}, wild = {addr = 0, access_size = 0}}}}}, CallocOverflow = {<__asan::ErrorBase> = {scariness = {score = 51, descr = "8-byte-read-heap-use-after-free\000\000\000\000\000\305,\260\267m\177\000\000\240\177\256\265\315{\000\000:\000\000\000\000\000\000\000\200\177\256\265\315{\000\000\220\177\256\265\315{\000\000\360\034%\216\375\177\000\000\005\214\244\267m\177\000\000P\n\261\264m{\000\000\000\000.\266m\177\000\000\001\000\000\000\000\000\000\000\001\000\000\000\246\000\001\001\000\000\000\000\000\000\000\000\370\377\377\377\377\377\377\377\332\177\256\265\315{\000\0000\035%\216\375\177\000\000\001\000\000\000\000\000\000\000:\000\000\000\000\000\000\000\000@\245\215\375\177\000\000:\000\000\000\000\000\000\000 E\217\264m{\000\0009\000\000\000"...}, tid = 0}, stack = 0x1bdec71900000002, count = 136879360841504, size = 0}, ReallocArrayOverflow = {<__asan::ErrorBase> = {scariness = {score = 51, descr = "8-byte-read-heap-use-after-free\000\000\000\000\000\305,\260\267m\177\000\000\240\177\256\265\315{\000\000:\000\000\000\000\000\000\000\200\177\256\265\315{\000\000\220\177\256\265\315{\000\000\360\034%\216\375\177\000\000\005\214\244\267m\177\000\000P\n\261\264m{\000\000\000\000.\266m\177\000\000\001\000\000\000\000\000\000\000\001\000\000\000\246\000\001\001\000\000\000\000\000\000\000\000\370\377\377\377\377\377\377\377\332\177\256\265\315{\000\0000\035%\216\375\177\000\000\001\000\000\000\000\000\000\000:\000\000\000\000\000\000\000\000@\245\215\375\177\000\000:\000\000\000\000\000\000\000 E\217\264m{\000\0009\000\000\000"...}, tid = 0}, stack = 0x1bdec71900000002, count = 136879360841504, size = 0}, PvallocOverflow = {<__asan::ErrorBase> = {scariness = {score = 51, descr = "8-byte-read-heap-use-after-free\000\000\000\000\000\305,\260\267m\177\000\000\240\177\256\265\315{\000\000:\000\000\000\000\000\000\000\200\177\256\265\315{\000\000\220\177\256\265\315{\000\000\360\034%\216\375\177\000\000\005\214\244\267m\177\000\000P\n\261\264m{\000\000\000\000.\266m\177\000\000\001\000\000\000\000\000\000\000\001\000\000\000\246\000\001\001\000\000\000\000\000\000\000\000\370\377\377\377\377\377\377\377\332\177\256\265\315{\000\0000\035%\216\375\177\000\000\001\000\000\000\000\000\000\000:\000\000\000\000\000\000\000\000@\245\215\375\177\000\000:\000\000\000\000\000\000\000 E\217\264m{\000\0009\000\000\000"...}, tid = 0}, stack = 0x1bdec71900000002, size = 136879360841504}, InvalidAllocationAlignment = {<__asan::ErrorBase> = {scariness = {score = 51, descr = "8-byte-read-heap-use-after-free\000\000\000\000\000\305,\260\267m\177\000\000\240\177\256\265\315{\000\000:\000\000\000\000\000\000\000\200\177\256\265\315{\000\000\220\177\256\265\315{\000\000\360\034%\216\375\177\000\000\005\214\244\267m\177\000\000P\n\261\264m{\000\000\000\000.\266m\177\000\000\001\000\000\000\000\000\000\000\001\000\000\000\246\000\001\001\000\000\000\000\000\000\000\000\370\377\377\377\377\377\377\377\332\177\256\265\315{\000\0000\035%\216\375\177\000\000\001\000\000\000\000\000\000\000:\000\000\000\000\000\000\000\000@\245\215\375\177\000\000:\000\000\000\000\000\000\000 E\217\264m{\000\0009\000\000\000"...}, tid = 0}, stack = 0x1bdec71900000002, alignment = 136879360841504}, InvalidAlignedAllocAlignment = {<__asan::ErrorBase> = {scariness = {score = 51, descr = "8-byte-read-heap-use-after-free\000\000\000\000\000\305,\260\267m\177\000\000\240\177\256\265\315{\000\000:\000\000\000\000\000\000\000\200\177\256\265\315{\000\000\220\177\256\265\315{\000\000\360\034%\216\375\177\000\000\005\214\244\267m\177\000\000P\n\261\264m{\000\000\000\000.\266m\177\000\000\001\000\000\000\000\000\000\000\001\000\000\000\246\000\001\001\000\000\000\000\000\000\000\000\370\377\377\377\377\377\377\377\332\177\256\265\315{\000\0000\035%\216\375\177\000\000\001\000\000\000\000\000\000\000:\000\000\000\000\000\000\000\000@\245\215\375\177\000\000:\000\000\000\000\000\000\000 E\217\264m{\000\0009\000\000\000"...}, tid = 0}, stack = 0x1bdec71900000002, size = 136879360841504, alignment = 0}, InvalidPosixMemalignAlignment = {<__asan::ErrorBase> = {scariness = {score = 51, descr = "8-byte-read-heap-use-after-free\000\000\000\000\000\305,\260\267m\177\000\000\240\177\256\265\315{\000\000:\000\000\000\000\000\000\000\200\177\256\265\315{\000\000\220\177\256\265\315{\000\000\360\034%\216\375\177\000\000\005\214\244\267m\177\000\000P\n\261\264m{\000\000\000\000.\266m\177\000\000\001\000\000\000\000\000\000\000\001\000\000\000\246\000\001\001\000\000\000\000\000\000\000\000\370\377\377\377\377\377\377\377\332\177\256\265\315{\000\0000\035%\216\375\177\000\000\001\000\000\000\000\000\000\000:\000\000\000\000\000\000\000\000@\245\215\375\177\000\000:\000\000\000\000\000\000\000 E\217\264m{\000\0009\000\000\000"...}, tid = 0}, stack = 0x1bdec71900000002, alignment = 136879360841504}, AllocationSizeTooBig = {<__asan::ErrorBase> = {scariness = {score = 51, descr = "8-byte-read-heap-use-after-free\000\000\000\000\000\305,\260\267m\177\000\000\240\177\256\265\315{\000\000:\000\000\000\000\000\000\000\200\177\256\265\315{\000\000\220\177\256\265\315{\000\000\360\034%\216\375\177\000\000\005\214\244\267m\177\000\000P\n\261\264m{\000\000\000\000.\266m\177\000\000\001\000\000\000\000\000\000\000\001\000\000\000\246\000\001\001\000\000\000\000\000\000\000\000\370\377\377\377\377\377\377\377\332\177\256\265\315{\000\0000\035%\216\375\177\000\000\001\000\000\000\000\000\000\000:\000\000\000\000\000\000\000\000@\245\215\375\177\000\000:\000\000\000\000\000\000\000 E\217\264m{\000\0009\000\000\000"...}, tid = 0}, stack = 0x1bdec71900000002, user_size = 136879360841504, total_size = 0, max_size = 0}, RssLimitExceeded = {<__asan::ErrorBase> = {scariness = {score = 51, descr = "8-byte-read-heap-use-after-free\000\000\000\000\000\305,\260\267m\177\000\000\240\177\256\265\315{\000\000:\000\000\000\000\000\000\000\200\177\256\265\315{\000\000\220\177\256\265\315{\000\000\360\034%\216\375\177\000\000\005\214\244\267m\177\000\000P\n\261\264m{\000\000\000\000.\266m\177\000\000\001\000\000\000\000\000\000\000\001\000\000\000\246\000\001\001\000\000\000\000\000\000\000\000\370\377\377\377\377\377\377\377\332\177\256\265\315{\000\0000\035%\216\375\177\000\000\001\000\000\000\000\000\000\000:\000\000\000\000\000\000\000\000@\245\215\375\177\000\000:\000\000\000\000\000\000\000 E\217\264m{\000\0009\000\000\000"...}, tid = 0}, stack = 0x1bdec71900000002}, OutOfMemory = {<__asan::ErrorBase> = {scariness = {score = 51, descr = "8-byte-read-heap-use-after-free\000\000\000\000\000\305,\260\267m\177\000\000\240\177\256\265\315{\000\000:\000\000\000\000\000\000\000\200\177\256\265\315{\000\000\220\177\256\265\315{\000\000\360\034%\216\375\177\000\000\005\214\244\267m\177\000\000P\n\261\264m{\000\000\000\000.\266m\177\000\000\001\000\000\000\000\000\000\000\001\000\000\000\246\000\001\001\000\000\000\000\000\000\000\000\370\377\377\377\377\377\377\377\332\177\256\265\315{\000\0000\035%\216\375\177\000\000\001\000\000\000\000\000\000\000:\000\000\000\000\000\000\000\000@\245\215\375\177\000\000:\000\000\000\000\000\000\000 E\217\264m{\000\0009\000\000\000"...}, tid = 0}, stack = 0x1bdec71900000002, requested_size = 136879360841504}, StringFunctionMemoryRangesOverlap = {<__asan::ErrorBase> = {scariness = {score = 51, descr = "8-byte-read-heap-use-after-free\000\000\000\000\000\305,\260\267m\177\000\000\240\177\256\265\315{\000\000:\000\000\000\000\000\000\000\200\177\256\265\315{\000\000\220\177\256\265\315{\000\000\360\034%\216\375\177\000\000\005\214\244\267m\177\000\000P\n\261\264m{\000\000\000\000.\266m\177\000\000\001\000\000\000\000\000\000\000\001\000\000\000\246\000\001\001\000\000\000\000\000\000\000\000\370\377\377\377\377\377\377\377\332\177\256\265\315{\000\0000\035%\216\375\177\000\000\001\000\000\000\000\000\000\000:\000\000\000\000\000\000\000\000@\245\215\375\177\000\000:\000\000\000\000\000\000\000 E\217\264m{\000\0009\000\000\000"...}, tid = 0}, stack = 0x1bdec71900000002, length1 = 136879360841504, length2 = 0, addr1_description = {data = {kind = __asan::kAddressKindWild, {shadow = {addr = 6158983102920, kind = (unknown: 0x20), shadow_byte = 23 '\027'}, heap = {addr = 6158983102920, alloc_tid = 136879360841504, free_tid = 96, alloc_stack_id = 3048085184, free_stack_id = 31869, chunk_access = {bad_addr = 232, offset = 140724603478024, chunk_begin = 140109181639104, chunk_size = 140726988251408, user_requested_alignment = 2, access_type = 0, alloc_type = 0}}, stack = {addr = 6158983102920, tid = 136879360841504, offset = 96, frame_pc = 136879360841408, access_size = 232, frame_descr = 0x7ffd00006008 <error: Cannot access memory at address 0x7ffd00006008>}, global = {addr = 6158983102920, static kMaxGlobals = 4, globals = {{beg = 136879360841504, size = 96, size_with_redzone = 136879360841408, name = 0xe8 <error: Cannot access memory at address 0xe8>, module_name = 0x7ffd00006008 <error: Cannot access memory at address 0x7ffd00006008>, has_dynamic_init = 140109181639104, gcc_location = 0x7ffd8e252110, odr_indicator = 2}, {beg = 140109210554304, size = 136673202408336, size_with_redzone = 140726988251360, name = 0x7f6db7a06738 <__sanitizer::Quarantine<__asan::QuarantineCallback, __asan::AsanChunk>::Put(__sanitizer::QuarantineCache<__asan::QuarantineCallback>*, __asan::QuarantineCallback, __asan::AsanChunk*, unsigned long)+248> "H\203;", module_name = 0xa0 <error: Cannot access memory at address 0xa0>, has_dynamic_init = 136673202408336, gcc_location = 0x7f6db62e00d0, odr_indicator = 140726988251392}, {beg = 136673202408352, size = 94173891270000, size_with_redzone = 140726988253712, name = 0x7b6db47dcfe0 "pU\256\265\335{", module_name = 0x7ffd8e252930 "", has_dynamic_init = 140109209834433, gcc_location = 0x7ffd8e252100, odr_indicator = 131918767746}, {beg = 140726988251408, size = 2, size_with_redzone = 140109209834496, name = 0x55a69154be68 <gatt_server_cleanup+200> "H\205\333t{\366\303\auvH\211\350H\301\350\003\200\270", module_name = 0x7ffd8e252910 "\340\317}\264m{", has_dynamic_init = 140726988253216, gcc_location = 0x7f6db6fbcde0 <_nl_C_locobj>, odr_indicator = 140109196942179}}, reg_sites = {1, 0, 2439302093, 21926}, access_size = 140726988253312, size = 112 'p'}, wild = {addr = 6158983102920, access_size = 136879360841504}}}}, addr2_description = {data = {kind = 8, {shadow = {addr = 140109210265495, kind = __asan::kShadowKindLow, shadow_byte = 253 '\375'}, heap = {addr = 140109210265495, alloc_tid = 140726988307712, free_tid = 140726988252952, alloc_stack_id = 250755328, free_stack_id = 467584793, chunk_access = {bad_addr = 140726988253152, offset = 140109210095485, chunk_begin = 136192166090120, chunk_size = 140109210529656, user_requested_alignment = 4095, access_type = 3, alloc_type = 3}}, stack = {addr = 140109210265495, tid = 140726988307712, offset = 140726988252952, frame_pc = 2008261394292685056, access_size = 140726988253152, frame_descr = 0x7f6db7b28f7d <__sanitizer::DTLS_on_tls_get_addr(void*, void*, unsigned long, unsigned long)+125> "I\211\302H\205\300u\035\351\213"}, global = {addr = 140109210265495, static kMaxGlobals = 4, globals = {{beg = 140726988307712, size = 140726988252952, size_with_redzone = 2008261394292685056, name = 0x7ffd8e2527e0 "H\024\256\265m|", module_name = 0x7f6db7b28f7d <__sanitizer::DTLS_on_tls_get_addr(void*, void*, unsigned long, unsigned long)+125> "I\211\302H\205\300u\035\351\213", has_dynamic_init = 136192166090120, gcc_location = 0x7f6db7b92f78, odr_indicator = 65535}, {beg = 2008261394292685056, size = 140109188524216, size_with_redzone = 140109210529656, name = 0x7bcdb5ae7a90 "", module_name = 0x7ffd8e252a10 "", has_dynamic_init = 136123446622816, gcc_location = 0x7bcdb5ae7a88, odr_indicator = 136123446622864}, {beg = 94173892158612, size = 64, size_with_redzone = 16963888724476, name = 0x7bedb5ae1620 "@\024\256\265m|", module_name = 0x7b6db47dd080 "\0166\340E", has_dynamic_init = 135848568766928, gcc_location = 0x55a691644452 <bt_att_chan_cancel+402>, odr_indicator = 10}, {beg = 136123446622864, size = 10, size_with_redzone = 94173892200216, name = 0x7c6db5ae1440 "", module_name = 0x7b6db47dd0e0 "", has_dynamic_init = 16963888724496, gcc_location = 0x7ffd8e2527f0, odr_indicator = 136810641364040}}, reg_sites = {2384800272, 32765, 3060361400, 32621}, access_size = 136535763456000, size = 32 ' '}, wild = {addr = 140109210265495, access_size = 140726988307712}}}}, function = 0x7f6db7ac1359 <___interceptor___tls_get_addr(void*)+89> "L\211\360H\213]\360L\213u\370\311\303f.\017\037\204"}, StringFunctionSizeOverflow = {<__asan::ErrorBase> = {scariness = {score = 51, descr = "8-byte-read-heap-use-after-free\000\000\000\000\000\305,\260\267m\177\000\000\240\177\256\265\315{\000\000:\000\000\000\000\000\000\000\200\177\256\265\315{\000\000\220\177\256\265\315{\000\000\360\034%\216\375\177\000\000\005\214\244\267m\177\000\000P\n\261\264m{\000\000\000\000.\266m\177\000\000\001\000\000\000\000\000\000\000\001\000\000\000\246\000\001\001\000\000\000\000\000\000\000\000\370\377\377\377\377\377\377\377\332\177\256\265\315{\000\0000\035%\216\375\177\000\000\001\000\000\000\000\000\000\000:\000\000\000\000\000\000\000\000@\245\215\375\177\000\000:\000\000\000\000\000\000\000 E\217\264m{\000\0009\000\000\000"...}, tid = 0}, stack = 0x1bdec71900000002, addr_description = {data = {kind = 3048085280, {shadow = {addr = 0, kind = __asan::kShadowKindLow, shadow_byte = 0 '\000'}, heap = {addr = 0, alloc_tid = 0, free_tid = 6158983102920, alloc_stack_id = 3048085280, free_stack_id = 31869, chunk_access = {bad_addr = 96, offset = 136879360841408, chunk_begin = 232, chunk_size = 140724603478024, user_requested_alignment = 2496, access_type = 1, alloc_type = 1}}, stack = {addr = 0, tid = 0, offset = 6158983102920, frame_pc = 136879360841504, access_size = 96, frame_descr = 0x7c7db5ae16c0 "\232\005"}, global = {addr = 0, static kMaxGlobals = 4, globals = {{beg = 0, size = 6158983102920, size_with_redzone = 136879360841504, name = 0x60 <error: Cannot access memory at address 0x60>, module_name = 0x7c7db5ae16c0 "\232\005", has_dynamic_init = 232, gcc_location = 0x7ffd00006008, odr_indicator = 140109181639104}, {beg = 140726988251408, size = 2, size_with_redzone = 140109210554304, name = 0x7c4db5ae0b90 "\003\021", module_name = 0x7ffd8e2520e0 "0)%\216\375\177", has_dynamic_init = 140109208905528, gcc_location = 0xa0, odr_indicator = 136673202408336}, {beg = 140109184630992, size = 140726988251392, size_with_redzone = 136673202408352, name = 0x55a691561570 <device_free> "\363\017\036\372USH\211\373H\203\354\030H\205\377\017\204-\n", module_name = 0x7ffd8e252a10 "", has_dynamic_init = 135711109795808, gcc_location = 0x7ffd8e252930, odr_indicator = 140109209834433}, {beg = 140726988251392, size = 131918767746, size_with_redzone = 140726988251408, name = 0x2 <error: Cannot access memory at address 0x2>, module_name = 0x7f6db7ae9400 <___interceptor_free(void*)+176> "D\213\215\314\367\377\377E\205\311t4H\211m\330A\203\371\001tzE\017\276\3061\311H\211\352H\211\306H\215\275\320\367\377\377\3502\026\001", has_dynamic_init = 94173891182184, gcc_location = 0x7ffd8e252910, odr_indicator = 140726988253216}}, reg_sites = {3069955552, 32621, 3068779363, 32621}, access_size = 1, size = 205 '\315'}, wild = {addr = 0, access_size = 0}}}}, size = 140726988253312}, BadParamsToAnnotateContiguousContainer = {<__asan::ErrorBase> = {scariness = {score = 51, descr = "8-byte-read-heap-use-after-free\000\000\000\000\000\305,\260\267m\177\000\000\240\177\256\265\315{\000\000:\000\000\000\000\000\000\000\200\177\256\265\315{\000\000\220\177\256\265\315{\000\000\360\034%\216\375\177\000\000\005\214\244\267m\177\000\000P\n\261\264m{\000\000\000\000.\266m\177\000\000\001\000\000\000\000\000\000\000\001\000\000\000\246\000\001\001\000\000\000\000\000\000\000\000\370\377\377\377\377\377\377\377\332\177\256\265\315{\000\0000\035%\216\375\177\000\000\001\000\000\000\000\000\000\000:\000\000\000\000\000\000\000\000@\245\215\375\177\000\000:\000\000\000\000\000\000\000 E\217\264m{\000\0009\000\000\000"...}, tid = 0}, stack = 0x1bdec71900000002, beg = 136879360841504, end = 0, old_mid = 0, new_mid = 6158983102920}, BadParamsToAnnotateDoubleEndedContiguousContainer = {<__asan::ErrorBase> = {scariness = {score = 51, descr = "8-byte-read-heap-use-after-free\000\000\000\000\000\305,\260\267m\177\000\000\240\177\256\265\315{\000\000:\000\000\000\000\000\000\000\200\177\256\265\315{\000\000\220\177\256\265\315{\000\000\360\034%\216\375\177\000\000\005\214\244\267m\177\000\000P\n\261\264m{\000\000\000\000.\266m\177\000\000\001\000\000\000\000\000\000\000\001\000\000\000\246\000\001\001\000\000\000\000\000\000\000\000\370\377\377\377\377\377\377\377\332\177\256\265\315{\000\0000\035%\216\375\177\000\000\001\000\000\000\000\000\000\000:\000\000\000\000\000\000\000\000@\245\215\375\177\000\000:\000\000\000\000\000\000\000 E\217\264m{\000\0009\000\000\000"...}, tid = 0}, stack = 0x1bdec71900000002, storage_beg = 136879360841504, storage_end = 0, old_container_beg = 0, old_container_end = 6158983102920, new_container_beg = 136879360841504, new_container_end = 96}, BadParamsToCopyContiguousContainerAnnotations = {<__asan::ErrorBase> = {scariness = {score = 51, descr = "8-byte-read-heap-use-after-free\000\000\000\000\000\305,\260\267m\177\000\000\240\177\256\265\315{\000\000:\000\000\000\000\000\000\000\200\177\256\265\315{\000\000\220\177\256\265\315{\000\000\360\034%\216\375\177\000\000\005\214\244\267m\177\000\000P\n\261\264m{\000\000\000\000.\266m\177\000\000\001\000\000\000\000\000\000\000\001\000\000\000\246\000\001\001\000\000\000\000\000\000\000\000\370\377\377\377\377\377\377\377\332\177\256\265\315{\000\0000\035%\216\375\177\000\000\001\000\000\000\000\000\000\000:\000\000\000\000\000\000\000\000@\245\215\375\177\000\000:\000\000\000\000\000\000\000 E\217\264m{\000\0009\000\000\000"...}, tid = 0}, stack = 0x1bdec71900000002, old_storage_beg = 136879360841504, old_storage_end = 0, new_storage_beg = 0, new_storage_end = 6158983102920}, ODRViolation = {<__asan::ErrorBase> = {scariness = {score = 51, descr = "8-byte-read-heap-use-after-free\000\000\000\000\000\305,\260\267m\177\000\000\240\177\256\265\315{\000\000:\000\000\000\000\000\000\000\200\177\256\265\315{\000\000\220\177\256\265\315{\000\000\360\034%\216\375\177\000\000\005\214\244\267m\177\000\000P\n\261\264m{\000\000\000\000.\266m\177\000\000\001\000\000\000\000\000\000\000\001\000\000\000\246\000\001\001\000\000\000\000\000\000\000\000\370\377\377\377\377\377\377\377\332\177\256\265\315{\000\0000\035%\216\375\177\000\000\001\000\000\000\000\000\000\000:\000\000\000\000\000\000\000\000@\245\215\375\177\000\000:\000\000\000\000\000\000\000 E\217\264m{\000\0009\000\000\000"...}, tid = 0}, global1 = {beg = 2008261394041929730, size = 136879360841504, size_with_redzone = 0, name = 0x0, module_name = 0x59a000001c8 <error: Cannot access memory at address 0x59a000001c8>, has_dynamic_init = 136879360841504, gcc_location = 0x60, odr_indicator = 136879360841408}, global2 = {beg = 232, size = 140724603478024, size_with_redzone = 140109181639104, name = 0x7ffd8e252110 "", module_name = 0x2 <error: Cannot access memory at address 0x2>, has_dynamic_init = 140109210554304, gcc_location = 0x7c4db5ae0b90, odr_indicator = 140726988251360}, stack_id1 = 3080742712, stack_id2 = 32621}, InvalidPointerPair = {<__asan::ErrorBase> = {scariness = {score = 51, descr = "8-byte-read-heap-use-after-free\000\000\000\000\000\305,\260\267m\177\000\000\240\177\256\265\315{\000\000:\000\000\000\000\000\000\000\200\177\256\265\315{\000\000\220\177\256\265\315{\000\000\360\034%\216\375\177\000\000\005\214\244\267m\177\000\000P\n\261\264m{\000\000\000\000.\266m\177\000\000\001\000\000\000\000\000\000\000\001\000\000\000\246\000\001\001\000\000\000\000\000\000\000\000\370\377\377\377\377\377\377\377\332\177\256\265\315{\000\0000\035%\216\375\177\000\000\001\000\000\000\000\000\000\000:\000\000\000\000\000\000\000\000@\245\215\375\177\000\000:\000\000\000\000\000\000\000 E\217\264m{\000\0009\000\000\000"...}, tid = 0}, pc = 2008261394041929730, bp = 136879360841504, sp = 0, addr1_description = {data = {kind = __asan::kAddressKindWild, {shadow = {addr = 6158983102920, kind = (unknown: 0x20), shadow_byte = 23 '\027'}, heap = {addr = 6158983102920, alloc_tid = 136879360841504, free_tid = 96, alloc_stack_id = 3048085184, free_stack_id = 31869, chunk_access = {bad_addr = 232, offset = 140724603478024, chunk_begin = 140109181639104, chunk_size = 140726988251408, user_requested_alignment = 2, access_type = 0, alloc_type = 0}}, stack = {addr = 6158983102920, tid = 136879360841504, offset = 96, frame_pc = 136879360841408, access_size = 232, frame_descr = 0x7ffd00006008 <error: Cannot access memory at address 0x7ffd00006008>}, global = {addr = 6158983102920, static kMaxGlobals = 4, globals = {{beg = 136879360841504, size = 96, size_with_redzone = 136879360841408, name = 0xe8 <error: Cannot access memory at address 0xe8>, module_name = 0x7ffd00006008 <error: Cannot access memory at address 0x7ffd00006008>, has_dynamic_init = 140109181639104, gcc_location = 0x7ffd8e252110, odr_indicator = 2}, {beg = 140109210554304, size = 136673202408336, size_with_redzone = 140726988251360, name = 0x7f6db7a06738 <__sanitizer::Quarantine<__asan::QuarantineCallback, __asan::AsanChunk>::Put(__sanitizer::QuarantineCache<__asan::QuarantineCallback>*, __asan::QuarantineCallback, __asan::AsanChunk*, unsigned long)+248> "H\203;", module_name = 0xa0 <error: Cannot access memory at address 0xa0>, has_dynamic_init = 136673202408336, gcc_location = 0x7f6db62e00d0, odr_indicator = 140726988251392}, {beg = 136673202408352, size = 94173891270000, size_with_redzone = 140726988253712, name = 0x7b6db47dcfe0 "pU\256\265\335{", module_name = 0x7ffd8e252930 "", has_dynamic_init = 140109209834433, gcc_location = 0x7ffd8e252100, odr_indicator = 131918767746}, {beg = 140726988251408, size = 2, size_with_redzone = 140109209834496, name = 0x55a69154be68 <gatt_server_cleanup+200> "H\205\333t{\366\303\auvH\211\350H\301\350\003\200\270", module_name = 0x7ffd8e252910 "\340\317}\264m{", has_dynamic_init = 140726988253216, gcc_location = 0x7f6db6fbcde0 <_nl_C_locobj>, odr_indicator = 140109196942179}}, reg_sites = {1, 0, 2439302093, 21926}, access_size = 140726988253312, size = 112 'p'}, wild = {addr = 6158983102920, access_size = 136879360841504}}}}, addr2_description = {data = {kind = 8, {shadow = {addr = 140109210265495, kind = __asan::kShadowKindLow, shadow_byte = 253 '\375'}, heap = {addr = 140109210265495, alloc_tid = 140726988307712, free_tid = 140726988252952, alloc_stack_id = 250755328, free_stack_id = 467584793, chunk_access = {bad_addr = 140726988253152, offset = 140109210095485, chunk_begin = 136192166090120, chunk_size = 140109210529656, user_requested_alignment = 4095, access_type = 3, alloc_type = 3}}, stack = {addr = 140109210265495, tid = 140726988307712, offset = 140726988252952, frame_pc = 2008261394292685056, access_size = 140726988253152, frame_descr = 0x7f6db7b28f7d <__sanitizer::DTLS_on_tls_get_addr(void*, void*, unsigned long, unsigned long)+125> "I\211\302H\205\300u\035\351\213"}, global = {addr = 140109210265495, static kMaxGlobals = 4, globals = {{beg = 140726988307712, size = 140726988252952, size_with_redzone = 2008261394292685056, name = 0x7ffd8e2527e0 "H\024\256\265m|", module_name = 0x7f6db7b28f7d <__sanitizer::DTLS_on_tls_get_addr(void*, void*, unsigned long, unsigned long)+125> "I\211\302H\205\300u\035\351\213", has_dynamic_init = 136192166090120, gcc_location = 0x7f6db7b92f78, odr_indicator = 65535}, {beg = 2008261394292685056, size = 140109188524216, size_with_redzone = 140109210529656, name = 0x7bcdb5ae7a90 "", module_name = 0x7ffd8e252a10 "", has_dynamic_init = 136123446622816, gcc_location = 0x7bcdb5ae7a88, odr_indicator = 136123446622864}, {beg = 94173892158612, size = 64, size_with_redzone = 16963888724476, name = 0x7bedb5ae1620 "@\024\256\265m|", module_name = 0x7b6db47dd080 "\0166\340E", has_dynamic_init = 135848568766928, gcc_location = 0x55a691644452 <bt_att_chan_cancel+402>, odr_indicator = 10}, {beg = 136123446622864, size = 10, size_with_redzone = 94173892200216, name = 0x7c6db5ae1440 "", module_name = 0x7b6db47dd0e0 "", has_dynamic_init = 16963888724496, gcc_location = 0x7ffd8e2527f0, odr_indicator = 136810641364040}}, reg_sites = {2384800272, 32765, 3060361400, 32621}, access_size = 136535763456000, size = 32 ' '}, wild = {addr = 140109210265495, access_size = 140726988307712}}}}}, Generic = {<__asan::ErrorBase> = {scariness = {score = 51, descr = "8-byte-read-heap-use-after-free\000\000\000\000\000\305,\260\267m\177\000\000\240\177\256\265\315{\000\000:\000\000\000\000\000\000\000\200\177\256\265\315{\000\000\220\177\256\265\315{\000\000\360\034%\216\375\177\000\000\005\214\244\267m\177\000\000P\n\261\264m{\000\000\000\000.\266m\177\000\000\001\000\000\000\000\000\000\000\001\000\000\000\246\000\001\001\000\000\000\000\000\000\000\000\370\377\377\377\377\377\377\377\332\177\256\265\315{\000\0000\035%\216\375\177\000\000\001\000\000\000\000\000\000\000:\000\000\000\000\000\000\000\000@\245\215\375\177\000\000:\000\000\000\000\000\000\000 E\217\264m{\000\0009\000\000\000"...}, tid = 0}, addr_description = {data = {kind = __asan::kAddressKindHeap, {shadow = {addr = 136879360841504, kind = __asan::kShadowKindLow, shadow_byte = 0 '\000'}, heap = {addr = 136879360841504, alloc_tid = 0, free_tid = 0, alloc_stack_id = 456, free_stack_id = 1434, chunk_access = {bad_addr = 136879360841504, offset = 96, chunk_begin = 136879360841408, chunk_size = 232, user_requested_alignment = 8, access_type = 2, alloc_type = 1}}, stack = {addr = 136879360841504, tid = 0, offset = 0, frame_pc = 6158983102920, access_size = 136879360841504, frame_descr = 0x60 <error: Cannot access memory at address 0x60>}, global = {addr = 136879360841504, static kMaxGlobals = 4, globals = {{beg = 0, size = 0, size_with_redzone = 6158983102920, name = 0x7c7db5ae1720 "\240\025\256\265\355{", module_name = 0x60 <error: Cannot access memory at address 0x60>, has_dynamic_init = 136879360841408, gcc_location = 0xe8, odr_indicator = 140724603478024}, {beg = 140109181639104, size = 140726988251408, size_with_redzone = 2, name = 0x7f6db7b98fc0 <__asan::instance> "", module_name = 0x7c4db5ae0b90 "\003\021", has_dynamic_init = 140726988251360, gcc_location = 0x7f6db7a06738 <__sanitizer::Quarantine<__asan::QuarantineCallback, __asan::AsanChunk>::Put(__sanitizer::QuarantineCache<__asan::QuarantineCallback>*, __asan::QuarantineCallback, __asan::AsanChunk*, unsigned long)+248>, odr_indicator = 160}, {beg = 136673202408336, size = 140109184630992, size_with_redzone = 140726988251392, name = 0x7c4db5ae0ba0 "\234\005", module_name = 0x55a691561570 <device_free> "\363\017\036\372USH\211\373H\203\354\030H\205\377\017\204-\n", has_dynamic_init = 140726988253712, gcc_location = 0x7b6db47dcfe0, odr_indicator = 140726988253488}, {beg = 140109209834433, size = 140726988251392, size_with_redzone = 131918767746, name = 0x7ffd8e252110 "", module_name = 0x2 <error: Cannot access memory at address 0x2>, has_dynamic_init = 140109209834496, gcc_location = 0x55a69154be68 <gatt_server_cleanup+200>, odr_indicator = 140726988253456}}, reg_sites = {2384799776, 32765, 3069955552, 32621}, access_size = 140109196942179, size = 1 '\001'}, wild = {addr = 136879360841504, access_size = 0}}}}, pc = 94173892234189, bp = 140726988253312, sp = 140726988253296, access_size = 8, bug_descr = 0x7f6db7b52797 "heap-use-after-free", is_write = false, shadow_val = 253 '\375'}}}, halt_on_error_ = true}
error = {<__asan::ErrorBase> = {scariness = {score = 51, descr = "8-byte-read-heap-use-after-free\000\000\000\000\000\305,\260\267m\177\000\000\240\177\256\265\315{\000\000:\000\000\000\000\000\000\000\200\177\256\265\315{\000\000\220\177\256\265\315{\000\000\360\034%\216\375\177\000\000\005\214\244\267m\177\000\000P\n\261\264m{\000\000\000\000.\266m\177\000\000\001\000\000\000\000\000\000\000\001\000\000\000\246\000\001\001\000\000\000\000\000\000\000\000\370\377\377\377\377\377\377\377\332\177\256\265\315{\000\0000\035%\216\375\177\000\000\001\000\000\000\000\000\000\000:\000\000\000\000\000\000\000\000@\245\215\375\177\000\000:\000\000\000\000\000\000\000 E\217\264m{\000\0009\000\000\000"...}, tid = 0}, addr_description = {data = {kind = __asan::kAddressKindHeap, {shadow = {addr = 136879360841504, kind = __asan::kShadowKindLow, shadow_byte = 0 '\000'}, heap = {addr = 136879360841504, alloc_tid = 0, free_tid = 0, alloc_stack_id = 456, free_stack_id = 1434, chunk_access = {bad_addr = 136879360841504, offset = 96, chunk_begin = 136879360841408, chunk_size = 232, user_requested_alignment = 8, access_type = 2, alloc_type = 1}}, stack = {addr = 136879360841504, tid = 0, offset = 0, frame_pc = 6158983102920, access_size = 136879360841504, frame_descr = 0x60 <error: Cannot access memory at address 0x60>}, global = {addr = 136879360841504, static kMaxGlobals = 4, globals = {{beg = 0, size = 0, size_with_redzone = 6158983102920, name = 0x7c7db5ae1720 "\240\025\256\265\355{", module_name = 0x60 <error: Cannot access memory at address 0x60>, has_dynamic_init = 136879360841408, gcc_location = 0xe8, odr_indicator = 140724603478024}, {beg = 140109181639104, size = 140726988251408, size_with_redzone = 2, name = 0x7f6db7b98fc0 <__asan::instance> "", module_name = 0x7c4db5ae0b90 "\003\021", has_dynamic_init = 140726988251360, gcc_location = 0x7f6db7a06738 <__sanitizer::Quarantine<__asan::QuarantineCallback, __asan::AsanChunk>::Put(__sanitizer::QuarantineCache<__asan::QuarantineCallback>*, __asan::QuarantineCallback, __asan::AsanChunk*, unsigned long)+248>, odr_indicator = 160}, {beg = 136673202408336, size = 140109184630992, size_with_redzone = 140726988251392, name = 0x7c4db5ae0ba0 "\234\005", module_name = 0x55a691561570 <device_free> "\363\017\036\372USH\211\373H\203\354\030H\205\377\017\204-\n", has_dynamic_init = 140726988253712, gcc_location = 0x7b6db47dcfe0, odr_indicator = 140726988253488}, {beg = 140109209834433, size = 140726988251392, size_with_redzone = 131918767746, name = 0x7ffd8e252110 "", module_name = 0x2 <error: Cannot access memory at address 0x2>, has_dynamic_init = 140109209834496, gcc_location = 0x55a69154be68 <gatt_server_cleanup+200>, odr_indicator = 140726988253456}}, reg_sites = {2384799776, 32765, 3069955552, 32621}, access_size = 140109196942179, size = 1 '\001'}, wild = {addr = 136879360841504, access_size = 0}}}}, pc = 94173892234189, bp = 140726988253312, sp = 140726988253296, access_size = 8, bug_descr = 0x7f6db7b52797 "heap-use-after-free", is_write = false, shadow_val = 253 '\375'}
#9 0x00007f6db7af6f8d in __asan::ReportGenericError (pc=<optimized out>, bp=bp@entry=140726988253312, sp=sp@entry=140726988253296, addr=<optimized out>, is_write=is_write@entry=false, access_size=access_size@entry=8, exp=<optimized out>, fatal=true) at ../../../../src/libsanitizer/asan/asan_report.cpp:536
in_report = <optimized out>
error = <optimized out>
enable_fp = <optimized out>
#10 0x00007f6db7af83f9 in __asan::__asan_report_load8 (addr=<optimized out>) at ../../../../src/libsanitizer/asan/asan_rtl.cpp:131
bp = 140726988253312
pc = <optimized out>
local_stack = 140726988253712
sp = 140726988253296
#11 0x000055a69164cbcd in discovery_op_free (op=0x7bedb5ae16a0) at src/shared/gatt-client.c:407
No locals.
#12 0x000055a691779e0a in bt_gatt_request_unref (req=0x7bedb5ae1fa0) at src/shared/gatt-helpers.c:577
No locals.
#13 bt_gatt_request_unref (req=0x7bedb5ae1fa0) at src/shared/gatt-helpers.c:566
No locals.
#14 0x000055a69163a494 in cancel_att_send_op (data=0x7bcdb5ae7a60) at src/shared/att.c:226
op = 0x7bcdb5ae7a60
#15 0x000055a6916451d9 in bt_att_cancel_all (att=<optimized out>) at src/shared/att.c:1951
chan = 0x7bedb5ae1620
entry = 0x7b8db5af41d0
#16 bt_att_cancel_all (att=<optimized out>) at src/shared/att.c:1932
entry = <optimized out>
chan = <optimized out>
#17 0x000055a691645fc0 in bt_att_unref (att=0x7c6db5ae1440) at src/shared/att.c:1350
No locals.
#18 bt_att_unref (att=0x7c6db5ae1440) at src/shared/att.c:1341
No locals.
#19 0x000055a6915611df in attio_cleanup (device=device@entry=0x7cddb5ae0b00) at src/device.c:873
No locals.
#20 0x000055a691561717 in device_free (user_data=0x7cddb5ae0b00) at src/device.c:918
device = 0x7cddb5ae0b00
__func__ = "device_free"
#21 0x000055a6915e24ca in remove_interface (data=0x7bddb5ae5570, name=name@entry=0x55a691808380 "org.bluez.Device1") at gdbus/object.c:742
iface = 0x7bcdb5ae6260
#22 0x000055a6915e508c in g_dbus_unregister_interface (connection=<optimized out>, path=<optimized out>, name=<optimized out>) at gdbus/object.c:1499
data = <optimized out>
#23 0x000055a69151735b in remove_temporary_devices (adapter=adapter@entry=0x7c9db5ae0200) at src/adapter.c:826
dev = 0x7cddb5ae0b00
l = <optimized out>
next = 0x0
#24 0x000055a6915186ba in adapter_shutdown () at src/adapter.c:11503
adapter = 0x7c9db5ae0200
list = 0x7b9db5ae3910 = {0x7c9db5ae0200}
__func__ = "adapter_shutdown"
#25 0x000055a6915b919c in signal_callback (signum=<optimized out>, user_data=<optimized out>) at src/main.c:1517
terminated = false
#26 signal_callback (signum=<optimized out>, user_data=<optimized out>) at src/main.c:1504
terminated = false
#27 0x000055a69176e39e in signal_read (io=<optimized out>, user_data=0x7b9db5ae34c0) at src/shared/mainloop-notify.c:145
data = <optimized out>
si = <optimized out>
result = <optimized out>
fd = <optimized out>
#28 0x000055a69176b295 in watch_callback (channel=<optimized out>, cond=<optimized out>, user_data=<optimized out>) at src/shared/io-glib.c:173
watch = <optimized out>
result = <optimized out>
destroy = <optimized out>
#29 0x00007f6db7802b9b in ?? () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#30 0x00007f6db78041d7 in ?? () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#31 0x00007f6db7804577 in g_main_loop_run () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#32 0x000055a69176e1f9 in mainloop_run () at src/shared/mainloop-glib.c:65
No locals.
#33 0x000055a69176eb2b in mainloop_run_with_signal (func=func@entry=0x55a6915b9120 <signal_callback>, user_data=user_data@entry=0x0) at src/shared/mainloop-notify.c:196
data = 0x7b9db5ae34c0
io = 0x7badb5af9590
ret = <optimized out>
#34 0x000055a6912ea40b in main (argc=<optimized out>, argv=<optimized out>) at src/main.c:1745
context = <optimized out>
err = <optimized out>
sdp_mtu = 0
sdp_flags = <optimized out>
gdbus_flags = <optimized out>
__func__ = "main""
https://github.com/bluez/bluez/pull/2774
---
Regards,
Linux Bluetooth
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2] shared/asha: prime volume before starting audio
2026-11-07 1:01 ` [PATCH v2] " Kyle Pepper
2026-11-07 2:51 ` [v2] " bluez.test.bot
@ 2026-11-07 7:02 ` cochcoder
2026-11-10 22:00 ` patchwork-bot+bluetooth
2 siblings, 0 replies; 6+ messages in thread
From: cochcoder @ 2026-11-07 7:02 UTC (permalink / raw)
To: linux-bluetooth; +Cc: marcel, luiz.von.dentz
Hi,
The TestFunctional failure during bearer teardown is a separate GATT discovery
lifetime bug, rather than a failure caused by the volume-prime change. The
coredump shows a heap-use-after-free in discovery_op_free() while unregistering
the discovery database callback, along this teardown path:
bt_gatt_request_unref() -> cancel_att_send_op() -> bt_att_cancel_all() ->
bt_att_unref() -> attio_cleanup() -> device_free()
I sent a separate fix, “[PATCH] shared/gatt-client: Cancel discovery
read-by-type requests”:
https://lore.kernel.org/linux-bluetooth/20261107065854.2147141-1-cochcoder@proton.me/
Please apply that patch before testing volume v2.
Thanks,
Kyle Pepper
On Friday, November 6th, 2026 at 8:01 PM, Kyle Pepper <cochcoder@proton.me> wrote:
> Prime the Volume characteristic with the cached volume before START so
> both volume inputs are initialized when audio starts. Keep the write
> best effort so a rejected volume write does not prevent START.
>
> Assisted-by: OpenCode:gpt-6.1-sol
> Assisted-by: Codex:gpt-6
> ---
> v2: Drop the standalone mock test and redundant failure log.
>
> Previous version:
> https://lore.kernel.org/linux-bluetooth/20261028133131.262033-1-cochcoder@proton.me/
>
> The unchanged local harness rejects baseline and passes this version,
> including ASan/UBSan and LTO checks. Full make check is blocked by an SDP
> debug-symbol linker failure also reproduced on unchanged upstream.
> No volume-only hardware ablation or new remote CI result is claimed.
>
> src/shared/asha.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/src/shared/asha.c b/src/shared/asha.c
> index 79bb29bf9a..6310a8357d 100644
> --- a/src/shared/asha.c
> +++ b/src/shared/asha.c
> @@ -262,6 +262,9 @@ unsigned int bt_asha_start(struct bt_asha *asha, bt_asha_cb_t cb,
> return 0;
> }
>
> + /* Some renderers require a Volume write before START. */
> + bt_asha_set_volume(asha, asha->volume);
> +
> ret = asha_send_acp(asha, acp_start_cmd, sizeof(acp_start_cmd), cb,
> user_data);
> if (ret < 0)
>
> base-commit: a8067198717b38391ca183ed7f41a69ec4b81b6e
> --
> 2.56.0
>
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2] shared/asha: prime volume before starting audio
2026-11-07 1:01 ` [PATCH v2] " Kyle Pepper
2026-11-07 2:51 ` [v2] " bluez.test.bot
2026-11-07 7:02 ` [PATCH v2] " cochcoder
@ 2026-11-10 22:00 ` patchwork-bot+bluetooth
2 siblings, 0 replies; 6+ messages in thread
From: patchwork-bot+bluetooth @ 2026-11-10 22:00 UTC (permalink / raw)
To: Kyle Pepper; +Cc: linux-bluetooth, marcel, luiz.von.dentz
Hello:
This patch was applied to bluetooth/bluez.git (master)
by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:
On Sat, 07 Nov 2026 01:01:13 +0000 you wrote:
> Prime the Volume characteristic with the cached volume before START so
> both volume inputs are initialized when audio starts. Keep the write
> best effort so a rejected volume write does not prevent START.
>
> Assisted-by: OpenCode:gpt-6.1-sol
> Assisted-by: Codex:gpt-6
>
> [...]
Here is the summary with links:
- [v2] shared/asha: prime volume before starting audio
https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=4287b3addc20
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-11-10 22:00 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-28 13:31 [PATCH RESEND] shared/asha: prime volume before starting audio Kyle Pepper
2026-10-28 16:25 ` [RESEND] " bluez.test.bot
2026-11-07 1:01 ` [PATCH v2] " Kyle Pepper
2026-11-07 2:51 ` [v2] " bluez.test.bot
2026-11-07 7:02 ` [PATCH v2] " cochcoder
2026-11-10 22:00 ` patchwork-bot+bluetooth
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox