Linux bluetooth development
 help / color / mirror / Atom feed
* [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