Assertion `(char *) aligned_storage + holder_size <= (char *)base_storage + base_allocation' failed.
- 主要語言
- C++
- 星號
- 537
- 分支
- 223
- 平均合併
- 11 小時 22 分鐘
- 30 天內合併 PR
- 2
描述
Hi,
Many thanks for the great library!
We just migrated to boost 1.78 and start getting:
```
python3: libs/python/src/object/class.cpp:762: static void* boost::python::instance_holder::allocate(PyObject*, std::size_t, std::size_t, std::size_t): Assertion `(char *) aligned_storage + holder_size <= (char *)base_storage + base_allocation' failed.
```
on arm platform. On x64 everything works perfect.
I took a look into boost::python::instance_holder::allocate with debugger and see:
```
sizeof(alignment_marker_t) == 4
alignment == 4
holder_size == 16
```
so assertion is correct.
I'm a bit confused, why we need -1 at https://github.com/boostorg/python/blame/develop/src/object/class.cpp#L750?
Looking forward for your answer!
貢獻指南
這個儲存庫沒有索引到貢獻指南
研究方向
Start in libs/python/src/object/class.cpp around the allocation logic near line 750 and inspect how the -1 adjustment interacts with ARM alignment and storage sizes. Reproduce the assertion on an ARM platform and compare it with the x64 behavior. Done means establishing whether the allocation calculation is incorrect and documenting or correcting it with validation for both platforms.
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- cpp, python
- 領域
- backend-api-design
- Issue 類型
- 缺陷
- 難度
- 4/5
- 預估耗時
- 3-5 天
- 活躍度
- 停滯
- 描述清晰度
- 基本清楚
- 新手友好度
- 35/100