fix: retain native debug symbols - #988

Merged
ovitrif merged 22 commits into
masterfrom
fix/sigabrt-crash-982
Jun 18, 2026
Merged

fix: retain native debug symbols#988
ovitrif merged 22 commits into
masterfrom
fix/sigabrt-crash-982

Conversation

@ovitrif

@ovitrifovitrif commented Jun 3, 2026

Copy link
Copy Markdown
Collaborator

Refs #982

Related

Description

This PR fixes the native crash symbolication path without bloating the app download.

  • Consumes stripped Rust Android packages:
    • com.synonym:bitkit-core-android:0.1.73
    • com.synonym:ldk-node-android:0.7.0-rc.51
    • com.synonym:vss-client-android:0.5.20
  • Keeps Android on the existing com.synonym:paykit-android:0.1.0-rc8 package for now. pubky/paykit-rs#54 prepares Paykit symbols upstream, but Android is intentionally not consuming that newer Paykit package in this PR because Paykit is not user-facing yet and the app integration update should land separately.
  • Resolves the consumed dependencies' separate native-debug-symbols classifier artifacts during just release.
  • Merges those upstream symbol zips into app/build/outputs/native-debug-symbols/mainnetRelease/native-debug-symbols-182.zip for Play Console and GitHub release uploads.
  • Includes native-debug-symbols-182.zip in both public and internal release workflow artifacts, with SHA256SUMS.txt, so release managers can keep the exact symbol archive from the release build.
  • Keeps Android-side guards so release builds fail if the required upstream symbol artifacts are missing, if duplicate upstream symbol entries would overwrite each other, or if the final archive would be created from stripped packaged .so files.
  • Keeps the app runtime artifacts stripped; the large DWARF/debug payload lives only in symbol archives.

Upstream package publication runs consumed by Android:

  • synonymdev/bitkit-core: 27626818150
  • synonymdev/ldk-node: 27703694826
  • synonymdev/vss-rust-client-ffi: 27703652412

Prepared upstream but not consumed by Android yet:

Preview

N/A

QA Notes

Passed locally on this rebased head:

  • actionlint .github/workflows/release.yml .github/workflows/release-internal.yml
  • sh -n scripts/create-native-debug-symbols.sh
  • GITHUB_TOKEN=$GITHUB_PAT just release
  • GITHUB_TOKEN=$GITHUB_PAT just compile
  • GITHUB_TOKEN=$GITHUB_PAT just test
  • GITHUB_TOKEN=$GITHUB_PAT just lint
  • git diff --check

Previously passed locally for this PR chain:

  • scripts/create-native-debug-symbols.sh
  • ./gradlew --no-daemon testDevDebugUnitTest --tests to.bitkit.build.NativeReleaseConfigTest

Artifact proof:

  • Remote POM/AAR/native-debug-symbols classifier URLs return HTTP 200 for bitkit-core, ldk-node, and vss-rust-client-ffi at the versions consumed by Android.
  • Downloaded remote AARs for bitkit-core, ldk-node, and vss-rust-client-ffi contain no .debug_* sections in packaged Rust .so files.
  • just release produced app/build/outputs/bundle/mainnetRelease/bitkit-mainnet-release-182.aab at 89,123,089 bytes.
  • just release produced app/build/outputs/native-debug-symbols/mainnetRelease/native-debug-symbols-182.zip at 315,939,504 bytes.
  • The built AAB contains stripped libbitkitcore.so, libldk_node.so, and libvss_rust_client_ffi.so files for arm64-v8a and armeabi-v7a, with no .debug_info sections.
  • The native debug symbols archive contains .debug_info DWARF metadata for libbitkitcore.so, libldk_node.so, and libvss_rust_client_ffi.so for both arm64-v8a and armeabi-v7a.
  • The native debug symbols archive intentionally does not contain libpaykit.so yet.

@ovitrifovitrif changed the title fix: bump bitkit-core dependencyfix: address prod sigabrt #982Jun 3, 2026
@ovitrifovitrif self-assigned this Jun 3, 2026
@ovitrifovitrif added this to the 2.3.0 milestone Jun 3, 2026
@ovitrifovitrif changed the title fix: address prod sigabrt #982fix: native code abort signal crashJun 3, 2026
@ovitrif
ovitrifforce-pushed the fix/sigabrt-crash-982 branch 2 times, most recently from f64bc5a to 008aa9cCompareJune 3, 2026 22:44
@ovitrifovitrif changed the title fix: native code abort signal crashchore: retain native debug symbolsJun 3, 2026
@ovitrif
ovitrif marked this pull request as draft June 3, 2026 22:50
@ovitrifovitrif mentioned this pull request Jun 3, 2026
3 tasks
@ovitrifovitrif changed the title chore: retain native debug symbolsfix: create native symbols zipJun 4, 2026
@ovitrif
ovitrif marked this pull request as ready for review June 4, 2026 14:19
chatgpt-codex-connector[bot]

This comment was marked as resolved.

@ovitrifovitrif changed the title fix: create native symbols zipfix: native code abort signal crashJun 4, 2026
@ovitrif

This comment was marked as outdated.

ben-kaufman

This comment was marked as resolved.

@ovitrifovitrif modified the milestones: 2.3.0, 2.4.0Jun 4, 2026
@ovitrif
ovitrif marked this pull request as draft June 4, 2026 18:08
@ovitrif

This comment was marked as outdated.

chatgpt-codex-connector[bot]

This comment was marked as resolved.

@ovitrifovitrif changed the title fix: native code abort signal crashfix: retain native debug symbolsJun 5, 2026
@ovitrif
ovitrif requested a review from ben-kaufmanJune 9, 2026 21:05
@ovitrif
ovitrifforce-pushed the fix/sigabrt-crash-982 branch from 01d9b88 to 4cd95d1CompareJune 17, 2026 17:21

@ovitrifovitrif left a comment

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

self-reviewed and tested

@ben-kaufmanben-kaufman left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good after re-audit.

@ovitrif
ovitrif merged commit 7c960a9 into masterJun 18, 2026
42 of 46 checks passed
@ovitrif
ovitrif deleted the fix/sigabrt-crash-982 branch June 18, 2026 11:58
@piotr-iohk

Copy link
Copy Markdown
Collaborator

So, release-internal produces native-debug-symbols.zip which is ~320MB, hope that's all right. https://github.com/synonymdev/bitkit-android/actions/runs/27754787963/job/82113826121

@ovitrif

ovitrif commented Jun 18, 2026

Copy link
Copy Markdown
CollaboratorAuthor

So, release-internal produces native-debug-symbols.zip which is ~320MB, hope that's all right. synonymdev/bitkit-android/actions/runs/27754787963/job/82113826121

Should normally be ok, was investigated on local release artifacts 👍🏻

I tried to already use it for de-symbolication of the existing crash "PCs" but according to AI it will only work when the APK/AAB is produced from same sources as the native-debug-symbols.zip, so it's only going to be useful in future release to debug.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@ovitrif@piotr-iohk@ben-kaufman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

fix: retain native debug symbols - #988

Merged
ovitrif merged 22 commits into
masterfrom
fix/sigabrt-crash-982
Jun 18, 2026
Merged

fix: retain native debug symbols#988
ovitrif merged 22 commits into
masterfrom
fix/sigabrt-crash-982

Conversation

@ovitrif

@ovitrifovitrif commented Jun 3, 2026

Copy link
Copy Markdown
Collaborator

Refs #982

Related

Description

This PR fixes the native crash symbolication path without bloating the app download.

  • Consumes stripped Rust Android packages:
    • com.synonym:bitkit-core-android:0.1.73
    • com.synonym:ldk-node-android:0.7.0-rc.51
    • com.synonym:vss-client-android:0.5.20
  • Keeps Android on the existing com.synonym:paykit-android:0.1.0-rc8 package for now. pubky/paykit-rs#54 prepares Paykit symbols upstream, but Android is intentionally not consuming that newer Paykit package in this PR because Paykit is not user-facing yet and the app integration update should land separately.
  • Resolves the consumed dependencies' separate native-debug-symbols classifier artifacts during just release.
  • Merges those upstream symbol zips into app/build/outputs/native-debug-symbols/mainnetRelease/native-debug-symbols-182.zip for Play Console and GitHub release uploads.
  • Includes native-debug-symbols-182.zip in both public and internal release workflow artifacts, with SHA256SUMS.txt, so release managers can keep the exact symbol archive from the release build.
  • Keeps Android-side guards so release builds fail if the required upstream symbol artifacts are missing, if duplicate upstream symbol entries would overwrite each other, or if the final archive would be created from stripped packaged .so files.
  • Keeps the app runtime artifacts stripped; the large DWARF/debug payload lives only in symbol archives.

Upstream package publication runs consumed by Android:

  • synonymdev/bitkit-core: 27626818150
  • synonymdev/ldk-node: 27703694826
  • synonymdev/vss-rust-client-ffi: 27703652412

Prepared upstream but not consumed by Android yet:

Preview

N/A

QA Notes

Passed locally on this rebased head:

  • actionlint .github/workflows/release.yml .github/workflows/release-internal.yml
  • sh -n scripts/create-native-debug-symbols.sh
  • GITHUB_TOKEN=$GITHUB_PAT just release
  • GITHUB_TOKEN=$GITHUB_PAT just compile
  • GITHUB_TOKEN=$GITHUB_PAT just test
  • GITHUB_TOKEN=$GITHUB_PAT just lint
  • git diff --check

Previously passed locally for this PR chain:

  • scripts/create-native-debug-symbols.sh
  • ./gradlew --no-daemon testDevDebugUnitTest --tests to.bitkit.build.NativeReleaseConfigTest

Artifact proof:

  • Remote POM/AAR/native-debug-symbols classifier URLs return HTTP 200 for bitkit-core, ldk-node, and vss-rust-client-ffi at the versions consumed by Android.
  • Downloaded remote AARs for bitkit-core, ldk-node, and vss-rust-client-ffi contain no .debug_* sections in packaged Rust .so files.
  • just release produced app/build/outputs/bundle/mainnetRelease/bitkit-mainnet-release-182.aab at 89,123,089 bytes.
  • just release produced app/build/outputs/native-debug-symbols/mainnetRelease/native-debug-symbols-182.zip at 315,939,504 bytes.
  • The built AAB contains stripped libbitkitcore.so, libldk_node.so, and libvss_rust_client_ffi.so files for arm64-v8a and armeabi-v7a, with no .debug_info sections.
  • The native debug symbols archive contains .debug_info DWARF metadata for libbitkitcore.so, libldk_node.so, and libvss_rust_client_ffi.so for both arm64-v8a and armeabi-v7a.
  • The native debug symbols archive intentionally does not contain libpaykit.so yet.

@ovitrifovitrif changed the title fix: bump bitkit-core dependencyfix: address prod sigabrt #982Jun 3, 2026
@ovitrifovitrif self-assigned this Jun 3, 2026
@ovitrifovitrif added this to the 2.3.0 milestone Jun 3, 2026
@ovitrifovitrif changed the title fix: address prod sigabrt #982fix: native code abort signal crashJun 3, 2026
@ovitrif
ovitrifforce-pushed the fix/sigabrt-crash-982 branch 2 times, most recently from f64bc5a to 008aa9cCompareJune 3, 2026 22:44
@ovitrifovitrif changed the title fix: native code abort signal crashchore: retain native debug symbolsJun 3, 2026
@ovitrif
ovitrif marked this pull request as draft June 3, 2026 22:50
@ovitrifovitrif mentioned this pull request Jun 3, 2026
3 tasks
@ovitrifovitrif changed the title chore: retain native debug symbolsfix: create native symbols zipJun 4, 2026
@ovitrif
ovitrif marked this pull request as ready for review June 4, 2026 14:19
chatgpt-codex-connector[bot]

This comment was marked as resolved.

@ovitrifovitrif changed the title fix: create native symbols zipfix: native code abort signal crashJun 4, 2026
@ovitrif

This comment was marked as outdated.

ben-kaufman

This comment was marked as resolved.

@ovitrifovitrif modified the milestones: 2.3.0, 2.4.0Jun 4, 2026
@ovitrif
ovitrif marked this pull request as draft June 4, 2026 18:08
@ovitrif

This comment was marked as outdated.

chatgpt-codex-connector[bot]

This comment was marked as resolved.

@ovitrifovitrif changed the title fix: native code abort signal crashfix: retain native debug symbolsJun 5, 2026
@ovitrif
ovitrif requested a review from ben-kaufmanJune 9, 2026 21:05
@ovitrif
ovitrifforce-pushed the fix/sigabrt-crash-982 branch from 01d9b88 to 4cd95d1CompareJune 17, 2026 17:21

@ovitrifovitrif left a comment

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

self-reviewed and tested

@ben-kaufmanben-kaufman left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good after re-audit.

@ovitrif
ovitrif merged commit 7c960a9 into masterJun 18, 2026
42 of 46 checks passed
@ovitrif
ovitrif deleted the fix/sigabrt-crash-982 branch June 18, 2026 11:58
@piotr-iohk

Copy link
Copy Markdown
Collaborator

So, release-internal produces native-debug-symbols.zip which is ~320MB, hope that's all right. https://github.com/synonymdev/bitkit-android/actions/runs/27754787963/job/82113826121

@ovitrif

ovitrif commented Jun 18, 2026

Copy link
Copy Markdown
CollaboratorAuthor

So, release-internal produces native-debug-symbols.zip which is ~320MB, hope that's all right. synonymdev/bitkit-android/actions/runs/27754787963/job/82113826121

Should normally be ok, was investigated on local release artifacts 👍🏻

I tried to already use it for de-symbolication of the existing crash "PCs" but according to AI it will only work when the APK/AAB is produced from same sources as the native-debug-symbols.zip, so it's only going to be useful in future release to debug.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@ovitrif@piotr-iohk@ben-kaufman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix: retain native debug symbols - #988

Merged
ovitrif merged 22 commits into
masterfrom
fix/sigabrt-crash-982
Jun 18, 2026
Merged

fix: retain native debug symbols#988
ovitrif merged 22 commits into
masterfrom
fix/sigabrt-crash-982

Conversation

@ovitrif

@ovitrifovitrif commented Jun 3, 2026

Copy link
Copy Markdown
Collaborator

Refs #982

Related

Description

This PR fixes the native crash symbolication path without bloating the app download.

  • Consumes stripped Rust Android packages:
    • com.synonym:bitkit-core-android:0.1.73
    • com.synonym:ldk-node-android:0.7.0-rc.51
    • com.synonym:vss-client-android:0.5.20
  • Keeps Android on the existing com.synonym:paykit-android:0.1.0-rc8 package for now. pubky/paykit-rs#54 prepares Paykit symbols upstream, but Android is intentionally not consuming that newer Paykit package in this PR because Paykit is not user-facing yet and the app integration update should land separately.
  • Resolves the consumed dependencies' separate native-debug-symbols classifier artifacts during just release.
  • Merges those upstream symbol zips into app/build/outputs/native-debug-symbols/mainnetRelease/native-debug-symbols-182.zip for Play Console and GitHub release uploads.
  • Includes native-debug-symbols-182.zip in both public and internal release workflow artifacts, with SHA256SUMS.txt, so release managers can keep the exact symbol archive from the release build.
  • Keeps Android-side guards so release builds fail if the required upstream symbol artifacts are missing, if duplicate upstream symbol entries would overwrite each other, or if the final archive would be created from stripped packaged .so files.
  • Keeps the app runtime artifacts stripped; the large DWARF/debug payload lives only in symbol archives.

Upstream package publication runs consumed by Android:

  • synonymdev/bitkit-core: 27626818150
  • synonymdev/ldk-node: 27703694826
  • synonymdev/vss-rust-client-ffi: 27703652412

Prepared upstream but not consumed by Android yet:

Preview

N/A

QA Notes

Passed locally on this rebased head:

  • actionlint .github/workflows/release.yml .github/workflows/release-internal.yml
  • sh -n scripts/create-native-debug-symbols.sh
  • GITHUB_TOKEN=$GITHUB_PAT just release
  • GITHUB_TOKEN=$GITHUB_PAT just compile
  • GITHUB_TOKEN=$GITHUB_PAT just test
  • GITHUB_TOKEN=$GITHUB_PAT just lint
  • git diff --check

Previously passed locally for this PR chain:

  • scripts/create-native-debug-symbols.sh
  • ./gradlew --no-daemon testDevDebugUnitTest --tests to.bitkit.build.NativeReleaseConfigTest

Artifact proof:

  • Remote POM/AAR/native-debug-symbols classifier URLs return HTTP 200 for bitkit-core, ldk-node, and vss-rust-client-ffi at the versions consumed by Android.
  • Downloaded remote AARs for bitkit-core, ldk-node, and vss-rust-client-ffi contain no .debug_* sections in packaged Rust .so files.
  • just release produced app/build/outputs/bundle/mainnetRelease/bitkit-mainnet-release-182.aab at 89,123,089 bytes.
  • just release produced app/build/outputs/native-debug-symbols/mainnetRelease/native-debug-symbols-182.zip at 315,939,504 bytes.
  • The built AAB contains stripped libbitkitcore.so, libldk_node.so, and libvss_rust_client_ffi.so files for arm64-v8a and armeabi-v7a, with no .debug_info sections.
  • The native debug symbols archive contains .debug_info DWARF metadata for libbitkitcore.so, libldk_node.so, and libvss_rust_client_ffi.so for both arm64-v8a and armeabi-v7a.
  • The native debug symbols archive intentionally does not contain libpaykit.so yet.

@ovitrifovitrif changed the title fix: bump bitkit-core dependencyfix: address prod sigabrt #982Jun 3, 2026
@ovitrifovitrif self-assigned this Jun 3, 2026
@ovitrifovitrif added this to the 2.3.0 milestone Jun 3, 2026
@ovitrifovitrif changed the title fix: address prod sigabrt #982fix: native code abort signal crashJun 3, 2026
@ovitrif
ovitrifforce-pushed the fix/sigabrt-crash-982 branch 2 times, most recently from f64bc5a to 008aa9cCompareJune 3, 2026 22:44
@ovitrifovitrif changed the title fix: native code abort signal crashchore: retain native debug symbolsJun 3, 2026
@ovitrif
ovitrif marked this pull request as draft June 3, 2026 22:50
@ovitrifovitrif mentioned this pull request Jun 3, 2026
3 tasks
@ovitrifovitrif changed the title chore: retain native debug symbolsfix: create native symbols zipJun 4, 2026
@ovitrif
ovitrif marked this pull request as ready for review June 4, 2026 14:19
chatgpt-codex-connector[bot]

This comment was marked as resolved.

@ovitrifovitrif changed the title fix: create native symbols zipfix: native code abort signal crashJun 4, 2026
@ovitrif

This comment was marked as outdated.

ben-kaufman

This comment was marked as resolved.

@ovitrifovitrif modified the milestones: 2.3.0, 2.4.0Jun 4, 2026
@ovitrif
ovitrif marked this pull request as draft June 4, 2026 18:08
@ovitrif

This comment was marked as outdated.

chatgpt-codex-connector[bot]

This comment was marked as resolved.

@ovitrifovitrif changed the title fix: native code abort signal crashfix: retain native debug symbolsJun 5, 2026
@ovitrif
ovitrif requested a review from ben-kaufmanJune 9, 2026 21:05
@ovitrif
ovitrifforce-pushed the fix/sigabrt-crash-982 branch from 01d9b88 to 4cd95d1CompareJune 17, 2026 17:21

@ovitrifovitrif left a comment

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

self-reviewed and tested

@ben-kaufmanben-kaufman left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good after re-audit.

@ovitrif
ovitrif merged commit 7c960a9 into masterJun 18, 2026
42 of 46 checks passed
@ovitrif
ovitrif deleted the fix/sigabrt-crash-982 branch June 18, 2026 11:58
@piotr-iohk

Copy link
Copy Markdown
Collaborator

So, release-internal produces native-debug-symbols.zip which is ~320MB, hope that's all right. https://github.com/synonymdev/bitkit-android/actions/runs/27754787963/job/82113826121

@ovitrif

ovitrif commented Jun 18, 2026

Copy link
Copy Markdown
CollaboratorAuthor

So, release-internal produces native-debug-symbols.zip which is ~320MB, hope that's all right. synonymdev/bitkit-android/actions/runs/27754787963/job/82113826121

Should normally be ok, was investigated on local release artifacts 👍🏻

I tried to already use it for de-symbolication of the existing crash "PCs" but according to AI it will only work when the APK/AAB is produced from same sources as the native-debug-symbols.zip, so it's only going to be useful in future release to debug.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@ovitrif@piotr-iohk@ben-kaufman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix: retain native debug symbols - #988

Merged
ovitrif merged 22 commits into
masterfrom
fix/sigabrt-crash-982
Jun 18, 2026
Merged

fix: retain native debug symbols#988
ovitrif merged 22 commits into
masterfrom
fix/sigabrt-crash-982

Conversation

@ovitrif

@ovitrifovitrif commented Jun 3, 2026

Copy link
Copy Markdown
Collaborator

Refs #982

Related

Description

This PR fixes the native crash symbolication path without bloating the app download.

  • Consumes stripped Rust Android packages:
    • com.synonym:bitkit-core-android:0.1.73
    • com.synonym:ldk-node-android:0.7.0-rc.51
    • com.synonym:vss-client-android:0.5.20
  • Keeps Android on the existing com.synonym:paykit-android:0.1.0-rc8 package for now. pubky/paykit-rs#54 prepares Paykit symbols upstream, but Android is intentionally not consuming that newer Paykit package in this PR because Paykit is not user-facing yet and the app integration update should land separately.
  • Resolves the consumed dependencies' separate native-debug-symbols classifier artifacts during just release.
  • Merges those upstream symbol zips into app/build/outputs/native-debug-symbols/mainnetRelease/native-debug-symbols-182.zip for Play Console and GitHub release uploads.
  • Includes native-debug-symbols-182.zip in both public and internal release workflow artifacts, with SHA256SUMS.txt, so release managers can keep the exact symbol archive from the release build.
  • Keeps Android-side guards so release builds fail if the required upstream symbol artifacts are missing, if duplicate upstream symbol entries would overwrite each other, or if the final archive would be created from stripped packaged .so files.
  • Keeps the app runtime artifacts stripped; the large DWARF/debug payload lives only in symbol archives.

Upstream package publication runs consumed by Android:

  • synonymdev/bitkit-core: 27626818150
  • synonymdev/ldk-node: 27703694826
  • synonymdev/vss-rust-client-ffi: 27703652412

Prepared upstream but not consumed by Android yet:

Preview

N/A

QA Notes

Passed locally on this rebased head:

  • actionlint .github/workflows/release.yml .github/workflows/release-internal.yml
  • sh -n scripts/create-native-debug-symbols.sh
  • GITHUB_TOKEN=$GITHUB_PAT just release
  • GITHUB_TOKEN=$GITHUB_PAT just compile
  • GITHUB_TOKEN=$GITHUB_PAT just test
  • GITHUB_TOKEN=$GITHUB_PAT just lint
  • git diff --check

Previously passed locally for this PR chain:

  • scripts/create-native-debug-symbols.sh
  • ./gradlew --no-daemon testDevDebugUnitTest --tests to.bitkit.build.NativeReleaseConfigTest

Artifact proof:

  • Remote POM/AAR/native-debug-symbols classifier URLs return HTTP 200 for bitkit-core, ldk-node, and vss-rust-client-ffi at the versions consumed by Android.
  • Downloaded remote AARs for bitkit-core, ldk-node, and vss-rust-client-ffi contain no .debug_* sections in packaged Rust .so files.
  • just release produced app/build/outputs/bundle/mainnetRelease/bitkit-mainnet-release-182.aab at 89,123,089 bytes.
  • just release produced app/build/outputs/native-debug-symbols/mainnetRelease/native-debug-symbols-182.zip at 315,939,504 bytes.
  • The built AAB contains stripped libbitkitcore.so, libldk_node.so, and libvss_rust_client_ffi.so files for arm64-v8a and armeabi-v7a, with no .debug_info sections.
  • The native debug symbols archive contains .debug_info DWARF metadata for libbitkitcore.so, libldk_node.so, and libvss_rust_client_ffi.so for both arm64-v8a and armeabi-v7a.
  • The native debug symbols archive intentionally does not contain libpaykit.so yet.

@ovitrifovitrif changed the title fix: bump bitkit-core dependencyfix: address prod sigabrt #982Jun 3, 2026
@ovitrifovitrif self-assigned this Jun 3, 2026
@ovitrifovitrif added this to the 2.3.0 milestone Jun 3, 2026
@ovitrifovitrif changed the title fix: address prod sigabrt #982fix: native code abort signal crashJun 3, 2026
@ovitrif
ovitrifforce-pushed the fix/sigabrt-crash-982 branch 2 times, most recently from f64bc5a to 008aa9cCompareJune 3, 2026 22:44
@ovitrifovitrif changed the title fix: native code abort signal crashchore: retain native debug symbolsJun 3, 2026
@ovitrif
ovitrif marked this pull request as draft June 3, 2026 22:50
@ovitrifovitrif mentioned this pull request Jun 3, 2026
3 tasks
@ovitrifovitrif changed the title chore: retain native debug symbolsfix: create native symbols zipJun 4, 2026
@ovitrif
ovitrif marked this pull request as ready for review June 4, 2026 14:19
chatgpt-codex-connector[bot]

This comment was marked as resolved.

@ovitrifovitrif changed the title fix: create native symbols zipfix: native code abort signal crashJun 4, 2026
@ovitrif

This comment was marked as outdated.

ben-kaufman

This comment was marked as resolved.

@ovitrifovitrif modified the milestones: 2.3.0, 2.4.0Jun 4, 2026
@ovitrif
ovitrif marked this pull request as draft June 4, 2026 18:08
@ovitrif

This comment was marked as outdated.

chatgpt-codex-connector[bot]

This comment was marked as resolved.

@ovitrifovitrif changed the title fix: native code abort signal crashfix: retain native debug symbolsJun 5, 2026
@ovitrif
ovitrif requested a review from ben-kaufmanJune 9, 2026 21:05
@ovitrif
ovitrifforce-pushed the fix/sigabrt-crash-982 branch from 01d9b88 to 4cd95d1CompareJune 17, 2026 17:21

@ovitrifovitrif left a comment

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

self-reviewed and tested

@ben-kaufmanben-kaufman left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good after re-audit.

@ovitrif
ovitrif merged commit 7c960a9 into masterJun 18, 2026
42 of 46 checks passed
@ovitrif
ovitrif deleted the fix/sigabrt-crash-982 branch June 18, 2026 11:58
@piotr-iohk

Copy link
Copy Markdown
Collaborator

So, release-internal produces native-debug-symbols.zip which is ~320MB, hope that's all right. https://github.com/synonymdev/bitkit-android/actions/runs/27754787963/job/82113826121

@ovitrif

ovitrif commented Jun 18, 2026

Copy link
Copy Markdown
CollaboratorAuthor

So, release-internal produces native-debug-symbols.zip which is ~320MB, hope that's all right. synonymdev/bitkit-android/actions/runs/27754787963/job/82113826121

Should normally be ok, was investigated on local release artifacts 👍🏻

I tried to already use it for de-symbolication of the existing crash "PCs" but according to AI it will only work when the APK/AAB is produced from same sources as the native-debug-symbols.zip, so it's only going to be useful in future release to debug.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@ovitrif@piotr-iohk@ben-kaufman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

fix: retain native debug symbols - #988

Merged
ovitrif merged 22 commits into
masterfrom
fix/sigabrt-crash-982
Jun 18, 2026
Merged

fix: retain native debug symbols#988
ovitrif merged 22 commits into
masterfrom
fix/sigabrt-crash-982

Conversation

@ovitrif

@ovitrifovitrif commented Jun 3, 2026

Copy link
Copy Markdown
Collaborator

Refs #982

Related

Description

This PR fixes the native crash symbolication path without bloating the app download.

  • Consumes stripped Rust Android packages:
    • com.synonym:bitkit-core-android:0.1.73
    • com.synonym:ldk-node-android:0.7.0-rc.51
    • com.synonym:vss-client-android:0.5.20
  • Keeps Android on the existing com.synonym:paykit-android:0.1.0-rc8 package for now. pubky/paykit-rs#54 prepares Paykit symbols upstream, but Android is intentionally not consuming that newer Paykit package in this PR because Paykit is not user-facing yet and the app integration update should land separately.
  • Resolves the consumed dependencies' separate native-debug-symbols classifier artifacts during just release.
  • Merges those upstream symbol zips into app/build/outputs/native-debug-symbols/mainnetRelease/native-debug-symbols-182.zip for Play Console and GitHub release uploads.
  • Includes native-debug-symbols-182.zip in both public and internal release workflow artifacts, with SHA256SUMS.txt, so release managers can keep the exact symbol archive from the release build.
  • Keeps Android-side guards so release builds fail if the required upstream symbol artifacts are missing, if duplicate upstream symbol entries would overwrite each other, or if the final archive would be created from stripped packaged .so files.
  • Keeps the app runtime artifacts stripped; the large DWARF/debug payload lives only in symbol archives.

Upstream package publication runs consumed by Android:

  • synonymdev/bitkit-core: 27626818150
  • synonymdev/ldk-node: 27703694826
  • synonymdev/vss-rust-client-ffi: 27703652412

Prepared upstream but not consumed by Android yet:

Preview

N/A

QA Notes

Passed locally on this rebased head:

  • actionlint .github/workflows/release.yml .github/workflows/release-internal.yml
  • sh -n scripts/create-native-debug-symbols.sh
  • GITHUB_TOKEN=$GITHUB_PAT just release
  • GITHUB_TOKEN=$GITHUB_PAT just compile
  • GITHUB_TOKEN=$GITHUB_PAT just test
  • GITHUB_TOKEN=$GITHUB_PAT just lint
  • git diff --check

Previously passed locally for this PR chain:

  • scripts/create-native-debug-symbols.sh
  • ./gradlew --no-daemon testDevDebugUnitTest --tests to.bitkit.build.NativeReleaseConfigTest

Artifact proof:

  • Remote POM/AAR/native-debug-symbols classifier URLs return HTTP 200 for bitkit-core, ldk-node, and vss-rust-client-ffi at the versions consumed by Android.
  • Downloaded remote AARs for bitkit-core, ldk-node, and vss-rust-client-ffi contain no .debug_* sections in packaged Rust .so files.
  • just release produced app/build/outputs/bundle/mainnetRelease/bitkit-mainnet-release-182.aab at 89,123,089 bytes.
  • just release produced app/build/outputs/native-debug-symbols/mainnetRelease/native-debug-symbols-182.zip at 315,939,504 bytes.
  • The built AAB contains stripped libbitkitcore.so, libldk_node.so, and libvss_rust_client_ffi.so files for arm64-v8a and armeabi-v7a, with no .debug_info sections.
  • The native debug symbols archive contains .debug_info DWARF metadata for libbitkitcore.so, libldk_node.so, and libvss_rust_client_ffi.so for both arm64-v8a and armeabi-v7a.
  • The native debug symbols archive intentionally does not contain libpaykit.so yet.

@ovitrifovitrif changed the title fix: bump bitkit-core dependencyfix: address prod sigabrt #982Jun 3, 2026
@ovitrifovitrif self-assigned this Jun 3, 2026
@ovitrifovitrif added this to the 2.3.0 milestone Jun 3, 2026
@ovitrifovitrif changed the title fix: address prod sigabrt #982fix: native code abort signal crashJun 3, 2026
@ovitrif
ovitrifforce-pushed the fix/sigabrt-crash-982 branch 2 times, most recently from f64bc5a to 008aa9cCompareJune 3, 2026 22:44
@ovitrifovitrif changed the title fix: native code abort signal crashchore: retain native debug symbolsJun 3, 2026
@ovitrif
ovitrif marked this pull request as draft June 3, 2026 22:50
@ovitrifovitrif mentioned this pull request Jun 3, 2026
3 tasks
@ovitrifovitrif changed the title chore: retain native debug symbolsfix: create native symbols zipJun 4, 2026
@ovitrif
ovitrif marked this pull request as ready for review June 4, 2026 14:19
chatgpt-codex-connector[bot]

This comment was marked as resolved.

@ovitrifovitrif changed the title fix: create native symbols zipfix: native code abort signal crashJun 4, 2026
@ovitrif

This comment was marked as outdated.

ben-kaufman

This comment was marked as resolved.

@ovitrifovitrif modified the milestones: 2.3.0, 2.4.0Jun 4, 2026
@ovitrif
ovitrif marked this pull request as draft June 4, 2026 18:08
@ovitrif

This comment was marked as outdated.

chatgpt-codex-connector[bot]

This comment was marked as resolved.

@ovitrifovitrif changed the title fix: native code abort signal crashfix: retain native debug symbolsJun 5, 2026
@ovitrif
ovitrif requested a review from ben-kaufmanJune 9, 2026 21:05
@ovitrif
ovitrifforce-pushed the fix/sigabrt-crash-982 branch from 01d9b88 to 4cd95d1CompareJune 17, 2026 17:21

@ovitrifovitrif left a comment

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

self-reviewed and tested

@ben-kaufmanben-kaufman left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good after re-audit.

@ovitrif
ovitrif merged commit 7c960a9 into masterJun 18, 2026
42 of 46 checks passed
@ovitrif
ovitrif deleted the fix/sigabrt-crash-982 branch June 18, 2026 11:58
@piotr-iohk

Copy link
Copy Markdown
Collaborator

So, release-internal produces native-debug-symbols.zip which is ~320MB, hope that's all right. https://github.com/synonymdev/bitkit-android/actions/runs/27754787963/job/82113826121

@ovitrif

ovitrif commented Jun 18, 2026

Copy link
Copy Markdown
CollaboratorAuthor

So, release-internal produces native-debug-symbols.zip which is ~320MB, hope that's all right. synonymdev/bitkit-android/actions/runs/27754787963/job/82113826121

Should normally be ok, was investigated on local release artifacts 👍🏻

I tried to already use it for de-symbolication of the existing crash "PCs" but according to AI it will only work when the APK/AAB is produced from same sources as the native-debug-symbols.zip, so it's only going to be useful in future release to debug.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@ovitrif@piotr-iohk@ben-kaufman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix: retain native debug symbols - #988

Merged
ovitrif merged 22 commits into
masterfrom
fix/sigabrt-crash-982
Jun 18, 2026
Merged

fix: retain native debug symbols#988
ovitrif merged 22 commits into
masterfrom
fix/sigabrt-crash-982

Conversation

@ovitrif

@ovitrifovitrif commented Jun 3, 2026

Copy link
Copy Markdown
Collaborator

Refs #982

Related

Description

This PR fixes the native crash symbolication path without bloating the app download.

  • Consumes stripped Rust Android packages:
    • com.synonym:bitkit-core-android:0.1.73
    • com.synonym:ldk-node-android:0.7.0-rc.51
    • com.synonym:vss-client-android:0.5.20
  • Keeps Android on the existing com.synonym:paykit-android:0.1.0-rc8 package for now. pubky/paykit-rs#54 prepares Paykit symbols upstream, but Android is intentionally not consuming that newer Paykit package in this PR because Paykit is not user-facing yet and the app integration update should land separately.
  • Resolves the consumed dependencies' separate native-debug-symbols classifier artifacts during just release.
  • Merges those upstream symbol zips into app/build/outputs/native-debug-symbols/mainnetRelease/native-debug-symbols-182.zip for Play Console and GitHub release uploads.
  • Includes native-debug-symbols-182.zip in both public and internal release workflow artifacts, with SHA256SUMS.txt, so release managers can keep the exact symbol archive from the release build.
  • Keeps Android-side guards so release builds fail if the required upstream symbol artifacts are missing, if duplicate upstream symbol entries would overwrite each other, or if the final archive would be created from stripped packaged .so files.
  • Keeps the app runtime artifacts stripped; the large DWARF/debug payload lives only in symbol archives.

Upstream package publication runs consumed by Android:

  • synonymdev/bitkit-core: 27626818150
  • synonymdev/ldk-node: 27703694826
  • synonymdev/vss-rust-client-ffi: 27703652412

Prepared upstream but not consumed by Android yet:

Preview

N/A

QA Notes

Passed locally on this rebased head:

  • actionlint .github/workflows/release.yml .github/workflows/release-internal.yml
  • sh -n scripts/create-native-debug-symbols.sh
  • GITHUB_TOKEN=$GITHUB_PAT just release
  • GITHUB_TOKEN=$GITHUB_PAT just compile
  • GITHUB_TOKEN=$GITHUB_PAT just test
  • GITHUB_TOKEN=$GITHUB_PAT just lint
  • git diff --check

Previously passed locally for this PR chain:

  • scripts/create-native-debug-symbols.sh
  • ./gradlew --no-daemon testDevDebugUnitTest --tests to.bitkit.build.NativeReleaseConfigTest

Artifact proof:

  • Remote POM/AAR/native-debug-symbols classifier URLs return HTTP 200 for bitkit-core, ldk-node, and vss-rust-client-ffi at the versions consumed by Android.
  • Downloaded remote AARs for bitkit-core, ldk-node, and vss-rust-client-ffi contain no .debug_* sections in packaged Rust .so files.
  • just release produced app/build/outputs/bundle/mainnetRelease/bitkit-mainnet-release-182.aab at 89,123,089 bytes.
  • just release produced app/build/outputs/native-debug-symbols/mainnetRelease/native-debug-symbols-182.zip at 315,939,504 bytes.
  • The built AAB contains stripped libbitkitcore.so, libldk_node.so, and libvss_rust_client_ffi.so files for arm64-v8a and armeabi-v7a, with no .debug_info sections.
  • The native debug symbols archive contains .debug_info DWARF metadata for libbitkitcore.so, libldk_node.so, and libvss_rust_client_ffi.so for both arm64-v8a and armeabi-v7a.
  • The native debug symbols archive intentionally does not contain libpaykit.so yet.

@ovitrifovitrif changed the title fix: bump bitkit-core dependencyfix: address prod sigabrt #982Jun 3, 2026
@ovitrifovitrif self-assigned this Jun 3, 2026
@ovitrifovitrif added this to the 2.3.0 milestone Jun 3, 2026
@ovitrifovitrif changed the title fix: address prod sigabrt #982fix: native code abort signal crashJun 3, 2026
@ovitrif
ovitrifforce-pushed the fix/sigabrt-crash-982 branch 2 times, most recently from f64bc5a to 008aa9cCompareJune 3, 2026 22:44
@ovitrifovitrif changed the title fix: native code abort signal crashchore: retain native debug symbolsJun 3, 2026
@ovitrif
ovitrif marked this pull request as draft June 3, 2026 22:50
@ovitrifovitrif mentioned this pull request Jun 3, 2026
3 tasks
@ovitrifovitrif changed the title chore: retain native debug symbolsfix: create native symbols zipJun 4, 2026
@ovitrif
ovitrif marked this pull request as ready for review June 4, 2026 14:19
chatgpt-codex-connector[bot]

This comment was marked as resolved.

@ovitrifovitrif changed the title fix: create native symbols zipfix: native code abort signal crashJun 4, 2026
@ovitrif

This comment was marked as outdated.

ben-kaufman

This comment was marked as resolved.

@ovitrifovitrif modified the milestones: 2.3.0, 2.4.0Jun 4, 2026
@ovitrif
ovitrif marked this pull request as draft June 4, 2026 18:08
@ovitrif

This comment was marked as outdated.

chatgpt-codex-connector[bot]

This comment was marked as resolved.

@ovitrifovitrif changed the title fix: native code abort signal crashfix: retain native debug symbolsJun 5, 2026
@ovitrif
ovitrif requested a review from ben-kaufmanJune 9, 2026 21:05
@ovitrif
ovitrifforce-pushed the fix/sigabrt-crash-982 branch from 01d9b88 to 4cd95d1CompareJune 17, 2026 17:21

@ovitrifovitrif left a comment

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

self-reviewed and tested

@ben-kaufmanben-kaufman left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good after re-audit.

@ovitrif
ovitrif merged commit 7c960a9 into masterJun 18, 2026
42 of 46 checks passed
@ovitrif
ovitrif deleted the fix/sigabrt-crash-982 branch June 18, 2026 11:58
@piotr-iohk

Copy link
Copy Markdown
Collaborator

So, release-internal produces native-debug-symbols.zip which is ~320MB, hope that's all right. https://github.com/synonymdev/bitkit-android/actions/runs/27754787963/job/82113826121

@ovitrif

ovitrif commented Jun 18, 2026

Copy link
Copy Markdown
CollaboratorAuthor

So, release-internal produces native-debug-symbols.zip which is ~320MB, hope that's all right. synonymdev/bitkit-android/actions/runs/27754787963/job/82113826121

Should normally be ok, was investigated on local release artifacts 👍🏻

I tried to already use it for de-symbolication of the existing crash "PCs" but according to AI it will only work when the APK/AAB is produced from same sources as the native-debug-symbols.zip, so it's only going to be useful in future release to debug.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@ovitrif@piotr-iohk@ben-kaufman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix: retain native debug symbols - #988

Merged
ovitrif merged 22 commits into
masterfrom
fix/sigabrt-crash-982
Jun 18, 2026
Merged

fix: retain native debug symbols#988
ovitrif merged 22 commits into
masterfrom
fix/sigabrt-crash-982

Conversation

@ovitrif

@ovitrifovitrif commented Jun 3, 2026

Copy link
Copy Markdown
Collaborator

Refs #982

Related

Description

This PR fixes the native crash symbolication path without bloating the app download.

  • Consumes stripped Rust Android packages:
    • com.synonym:bitkit-core-android:0.1.73
    • com.synonym:ldk-node-android:0.7.0-rc.51
    • com.synonym:vss-client-android:0.5.20
  • Keeps Android on the existing com.synonym:paykit-android:0.1.0-rc8 package for now. pubky/paykit-rs#54 prepares Paykit symbols upstream, but Android is intentionally not consuming that newer Paykit package in this PR because Paykit is not user-facing yet and the app integration update should land separately.
  • Resolves the consumed dependencies' separate native-debug-symbols classifier artifacts during just release.
  • Merges those upstream symbol zips into app/build/outputs/native-debug-symbols/mainnetRelease/native-debug-symbols-182.zip for Play Console and GitHub release uploads.
  • Includes native-debug-symbols-182.zip in both public and internal release workflow artifacts, with SHA256SUMS.txt, so release managers can keep the exact symbol archive from the release build.
  • Keeps Android-side guards so release builds fail if the required upstream symbol artifacts are missing, if duplicate upstream symbol entries would overwrite each other, or if the final archive would be created from stripped packaged .so files.
  • Keeps the app runtime artifacts stripped; the large DWARF/debug payload lives only in symbol archives.

Upstream package publication runs consumed by Android:

  • synonymdev/bitkit-core: 27626818150
  • synonymdev/ldk-node: 27703694826
  • synonymdev/vss-rust-client-ffi: 27703652412

Prepared upstream but not consumed by Android yet:

Preview

N/A

QA Notes

Passed locally on this rebased head:

  • actionlint .github/workflows/release.yml .github/workflows/release-internal.yml
  • sh -n scripts/create-native-debug-symbols.sh
  • GITHUB_TOKEN=$GITHUB_PAT just release
  • GITHUB_TOKEN=$GITHUB_PAT just compile
  • GITHUB_TOKEN=$GITHUB_PAT just test
  • GITHUB_TOKEN=$GITHUB_PAT just lint
  • git diff --check

Previously passed locally for this PR chain:

  • scripts/create-native-debug-symbols.sh
  • ./gradlew --no-daemon testDevDebugUnitTest --tests to.bitkit.build.NativeReleaseConfigTest

Artifact proof:

  • Remote POM/AAR/native-debug-symbols classifier URLs return HTTP 200 for bitkit-core, ldk-node, and vss-rust-client-ffi at the versions consumed by Android.
  • Downloaded remote AARs for bitkit-core, ldk-node, and vss-rust-client-ffi contain no .debug_* sections in packaged Rust .so files.
  • just release produced app/build/outputs/bundle/mainnetRelease/bitkit-mainnet-release-182.aab at 89,123,089 bytes.
  • just release produced app/build/outputs/native-debug-symbols/mainnetRelease/native-debug-symbols-182.zip at 315,939,504 bytes.
  • The built AAB contains stripped libbitkitcore.so, libldk_node.so, and libvss_rust_client_ffi.so files for arm64-v8a and armeabi-v7a, with no .debug_info sections.
  • The native debug symbols archive contains .debug_info DWARF metadata for libbitkitcore.so, libldk_node.so, and libvss_rust_client_ffi.so for both arm64-v8a and armeabi-v7a.
  • The native debug symbols archive intentionally does not contain libpaykit.so yet.

@ovitrifovitrif changed the title fix: bump bitkit-core dependencyfix: address prod sigabrt #982Jun 3, 2026
@ovitrifovitrif self-assigned this Jun 3, 2026
@ovitrifovitrif added this to the 2.3.0 milestone Jun 3, 2026
@ovitrifovitrif changed the title fix: address prod sigabrt #982fix: native code abort signal crashJun 3, 2026
@ovitrif
ovitrifforce-pushed the fix/sigabrt-crash-982 branch 2 times, most recently from f64bc5a to 008aa9cCompareJune 3, 2026 22:44
@ovitrifovitrif changed the title fix: native code abort signal crashchore: retain native debug symbolsJun 3, 2026
@ovitrif
ovitrif marked this pull request as draft June 3, 2026 22:50
@ovitrifovitrif mentioned this pull request Jun 3, 2026
3 tasks
@ovitrifovitrif changed the title chore: retain native debug symbolsfix: create native symbols zipJun 4, 2026
@ovitrif
ovitrif marked this pull request as ready for review June 4, 2026 14:19
chatgpt-codex-connector[bot]

This comment was marked as resolved.

@ovitrifovitrif changed the title fix: create native symbols zipfix: native code abort signal crashJun 4, 2026
@ovitrif

This comment was marked as outdated.

ben-kaufman

This comment was marked as resolved.

@ovitrifovitrif modified the milestones: 2.3.0, 2.4.0Jun 4, 2026
@ovitrif
ovitrif marked this pull request as draft June 4, 2026 18:08
@ovitrif

This comment was marked as outdated.

chatgpt-codex-connector[bot]

This comment was marked as resolved.

@ovitrifovitrif changed the title fix: native code abort signal crashfix: retain native debug symbolsJun 5, 2026
@ovitrif
ovitrif requested a review from ben-kaufmanJune 9, 2026 21:05
@ovitrif
ovitrifforce-pushed the fix/sigabrt-crash-982 branch from 01d9b88 to 4cd95d1CompareJune 17, 2026 17:21

@ovitrifovitrif left a comment

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

self-reviewed and tested

@ben-kaufmanben-kaufman left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good after re-audit.

@ovitrif
ovitrif merged commit 7c960a9 into masterJun 18, 2026
42 of 46 checks passed
@ovitrif
ovitrif deleted the fix/sigabrt-crash-982 branch June 18, 2026 11:58
@piotr-iohk

Copy link
Copy Markdown
Collaborator

So, release-internal produces native-debug-symbols.zip which is ~320MB, hope that's all right. https://github.com/synonymdev/bitkit-android/actions/runs/27754787963/job/82113826121

@ovitrif

ovitrif commented Jun 18, 2026

Copy link
Copy Markdown
CollaboratorAuthor

So, release-internal produces native-debug-symbols.zip which is ~320MB, hope that's all right. synonymdev/bitkit-android/actions/runs/27754787963/job/82113826121

Should normally be ok, was investigated on local release artifacts 👍🏻

I tried to already use it for de-symbolication of the existing crash "PCs" but according to AI it will only work when the APK/AAB is produced from same sources as the native-debug-symbols.zip, so it's only going to be useful in future release to debug.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@ovitrif@piotr-iohk@ben-kaufman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

fix: retain native debug symbols - #988

Merged
ovitrif merged 22 commits into
masterfrom
fix/sigabrt-crash-982
Jun 18, 2026
Merged

fix: retain native debug symbols#988
ovitrif merged 22 commits into
masterfrom
fix/sigabrt-crash-982

Conversation

@ovitrif

@ovitrifovitrif commented Jun 3, 2026

Copy link
Copy Markdown
Collaborator

Refs #982

Related

Description

This PR fixes the native crash symbolication path without bloating the app download.

  • Consumes stripped Rust Android packages:
    • com.synonym:bitkit-core-android:0.1.73
    • com.synonym:ldk-node-android:0.7.0-rc.51
    • com.synonym:vss-client-android:0.5.20
  • Keeps Android on the existing com.synonym:paykit-android:0.1.0-rc8 package for now. pubky/paykit-rs#54 prepares Paykit symbols upstream, but Android is intentionally not consuming that newer Paykit package in this PR because Paykit is not user-facing yet and the app integration update should land separately.
  • Resolves the consumed dependencies' separate native-debug-symbols classifier artifacts during just release.
  • Merges those upstream symbol zips into app/build/outputs/native-debug-symbols/mainnetRelease/native-debug-symbols-182.zip for Play Console and GitHub release uploads.
  • Includes native-debug-symbols-182.zip in both public and internal release workflow artifacts, with SHA256SUMS.txt, so release managers can keep the exact symbol archive from the release build.
  • Keeps Android-side guards so release builds fail if the required upstream symbol artifacts are missing, if duplicate upstream symbol entries would overwrite each other, or if the final archive would be created from stripped packaged .so files.
  • Keeps the app runtime artifacts stripped; the large DWARF/debug payload lives only in symbol archives.

Upstream package publication runs consumed by Android:

  • synonymdev/bitkit-core: 27626818150
  • synonymdev/ldk-node: 27703694826
  • synonymdev/vss-rust-client-ffi: 27703652412

Prepared upstream but not consumed by Android yet:

Preview

N/A

QA Notes

Passed locally on this rebased head:

  • actionlint .github/workflows/release.yml .github/workflows/release-internal.yml
  • sh -n scripts/create-native-debug-symbols.sh
  • GITHUB_TOKEN=$GITHUB_PAT just release
  • GITHUB_TOKEN=$GITHUB_PAT just compile
  • GITHUB_TOKEN=$GITHUB_PAT just test
  • GITHUB_TOKEN=$GITHUB_PAT just lint
  • git diff --check

Previously passed locally for this PR chain:

  • scripts/create-native-debug-symbols.sh
  • ./gradlew --no-daemon testDevDebugUnitTest --tests to.bitkit.build.NativeReleaseConfigTest

Artifact proof:

  • Remote POM/AAR/native-debug-symbols classifier URLs return HTTP 200 for bitkit-core, ldk-node, and vss-rust-client-ffi at the versions consumed by Android.
  • Downloaded remote AARs for bitkit-core, ldk-node, and vss-rust-client-ffi contain no .debug_* sections in packaged Rust .so files.
  • just release produced app/build/outputs/bundle/mainnetRelease/bitkit-mainnet-release-182.aab at 89,123,089 bytes.
  • just release produced app/build/outputs/native-debug-symbols/mainnetRelease/native-debug-symbols-182.zip at 315,939,504 bytes.
  • The built AAB contains stripped libbitkitcore.so, libldk_node.so, and libvss_rust_client_ffi.so files for arm64-v8a and armeabi-v7a, with no .debug_info sections.
  • The native debug symbols archive contains .debug_info DWARF metadata for libbitkitcore.so, libldk_node.so, and libvss_rust_client_ffi.so for both arm64-v8a and armeabi-v7a.
  • The native debug symbols archive intentionally does not contain libpaykit.so yet.

@ovitrifovitrif changed the title fix: bump bitkit-core dependencyfix: address prod sigabrt #982Jun 3, 2026
@ovitrifovitrif self-assigned this Jun 3, 2026
@ovitrifovitrif added this to the 2.3.0 milestone Jun 3, 2026
@ovitrifovitrif changed the title fix: address prod sigabrt #982fix: native code abort signal crashJun 3, 2026
@ovitrif
ovitrifforce-pushed the fix/sigabrt-crash-982 branch 2 times, most recently from f64bc5a to 008aa9cCompareJune 3, 2026 22:44
@ovitrifovitrif changed the title fix: native code abort signal crashchore: retain native debug symbolsJun 3, 2026
@ovitrif
ovitrif marked this pull request as draft June 3, 2026 22:50
@ovitrifovitrif mentioned this pull request Jun 3, 2026
3 tasks
@ovitrifovitrif changed the title chore: retain native debug symbolsfix: create native symbols zipJun 4, 2026
@ovitrif
ovitrif marked this pull request as ready for review June 4, 2026 14:19
chatgpt-codex-connector[bot]

This comment was marked as resolved.

@ovitrifovitrif changed the title fix: create native symbols zipfix: native code abort signal crashJun 4, 2026
@ovitrif

This comment was marked as outdated.

ben-kaufman

This comment was marked as resolved.

@ovitrifovitrif modified the milestones: 2.3.0, 2.4.0Jun 4, 2026
@ovitrif
ovitrif marked this pull request as draft June 4, 2026 18:08
@ovitrif

This comment was marked as outdated.

chatgpt-codex-connector[bot]

This comment was marked as resolved.

@ovitrifovitrif changed the title fix: native code abort signal crashfix: retain native debug symbolsJun 5, 2026
@ovitrif
ovitrif requested a review from ben-kaufmanJune 9, 2026 21:05
@ovitrif
ovitrifforce-pushed the fix/sigabrt-crash-982 branch from 01d9b88 to 4cd95d1CompareJune 17, 2026 17:21

@ovitrifovitrif left a comment

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

self-reviewed and tested

@ben-kaufmanben-kaufman left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good after re-audit.

@ovitrif
ovitrif merged commit 7c960a9 into masterJun 18, 2026
42 of 46 checks passed
@ovitrif
ovitrif deleted the fix/sigabrt-crash-982 branch June 18, 2026 11:58
@piotr-iohk

Copy link
Copy Markdown
Collaborator

So, release-internal produces native-debug-symbols.zip which is ~320MB, hope that's all right. https://github.com/synonymdev/bitkit-android/actions/runs/27754787963/job/82113826121

@ovitrif

ovitrif commented Jun 18, 2026

Copy link
Copy Markdown
CollaboratorAuthor

So, release-internal produces native-debug-symbols.zip which is ~320MB, hope that's all right. synonymdev/bitkit-android/actions/runs/27754787963/job/82113826121

Should normally be ok, was investigated on local release artifacts 👍🏻

I tried to already use it for de-symbolication of the existing crash "PCs" but according to AI it will only work when the APK/AAB is produced from same sources as the native-debug-symbols.zip, so it's only going to be useful in future release to debug.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@ovitrif@piotr-iohk@ben-kaufman