Skip to content

[Core:Bugfix] Fix crashes when mmap allocation fails across all backends - #4630

Merged
v0jiuqi merged 1 commit into
masterfrom
sync/20260716-1138
Jul 16, 2026
Merged

[Core:Bugfix] Fix crashes when mmap allocation fails across all backends#4630
v0jiuqi merged 1 commit into
masterfrom
sync/20260716-1138

Conversation

@v0jiuqi

@v0jiuqi v0jiuqi commented Jul 16, 2026

Copy link
Copy Markdown
Collaborator

When mmap-backed allocation fails (disk full, mmap error, file too short), backends silently stored null device pointers into tensors, causing EXC_BAD_ACCESS / SIGBUS crashes on iOS.

Fixes across all backends:

  • LLM: grow mmap cache file before mmap to avoid SIGBUS past EOF; release module before runtime in load() to fix use-after-free
  • Metal: check nil Metal buffer from failed mmap, fall back to non-mmap GPU allocator (mStaticAllocatorRaw)
  • OpenCL: null-check all alloc() paths in onAcquire, fall back to non-mmap BufferPool; propagate MmapPool failure instead of wrapping null
  • CPU: fall back to mStaticAllocatorRaw when mmap static allocation fails
  • Vulkan: fix CALL_VK no-op in release builds; null-check allocations in onAcquire, VulkanBuffer/VulkanImage constructors
  • CUDA: add null checks after pool->alloc() in all 26 execution kernels, return OUT_OF_MEMORY or set mValid=false

Discussed-in: Merge-Request 28543428 , URL: https://code.alibaba-inc.com/AliNN/AliNNPrivate/codereview/28543428
GitOrigin-RevId: b59217536d041370f22167289464ad7225a14178

Description

Module

Type

  • Feature
  • Bugfix
  • Perf
  • Refact
  • Style
  • Doc
  • Test
  • Chore

Checklist

  • Commit message follows [Module:Type] Description format
  • Code compiles without errors
  • Tested on relevant platform(s)
  • No unrelated format or style changes included

When mmap-backed allocation fails (disk full, mmap error, file too short),
backends silently stored null device pointers into tensors, causing
EXC_BAD_ACCESS / SIGBUS crashes on iOS.

Fixes across all backends:
- LLM: grow mmap cache file before mmap to avoid SIGBUS past EOF;
  release module before runtime in load() to fix use-after-free
- Metal: check nil Metal buffer from failed mmap, fall back to
  non-mmap GPU allocator (mStaticAllocatorRaw)
- OpenCL: null-check all alloc() paths in onAcquire, fall back to
  non-mmap BufferPool; propagate MmapPool failure instead of wrapping null
- CPU: fall back to mStaticAllocatorRaw when mmap static allocation fails
- Vulkan: fix CALL_VK no-op in release builds; null-check allocations
  in onAcquire, VulkanBuffer/VulkanImage constructors
- CUDA: add null checks after pool->alloc() in all 26 execution kernels,
  return OUT_OF_MEMORY or set mValid=false

Discussed-in: Merge-Request 28543428 , URL: https://code.alibaba-inc.com/AliNN/AliNNPrivate/codereview/28543428
GitOrigin-RevId: b59217536d041370f22167289464ad7225a14178
@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.


jingbang.yjb seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.
You have signed the CLA already but the status is still pending? Let us recheck it.

@v0jiuqi
v0jiuqi merged commit fd514c1 into master Jul 16, 2026
14 of 15 checks passed
Sign up for free to 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