Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

dev:tests/unit/image_stream.cpp 与实现脱节,BGRA8 断言拒绝但实现接受,Debug 下确定性 SIGABRT

クローズ
#82 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 2 日以内に返信

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
68/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
cmake, cpp

調査の方向性

Read tests/unit/image_stream.cpp:34 alongside core/render/image_stream.cpp, especially ImageFrame::valid() and submit(). Reproduce the failure with the supplied Debug CMake build, then confirm the intended BGRA8 behavior with a maintainer. Done means the image_stream test no longer aborts in Debug and covers the agreed BGRA8 result, including conversion content if support is retained.

索引モデルが issue の本文から書いたものです。

説明

问题

上游测试套件在 Debug 构建下,image_stream 单测确定性 SIGABRT(连跑 3 次,3/3 复现,exit 134):断言 BGRA8 帧提交必须被拒绝,但实现已显式支持 BGRA8。这是 dev HEAD 既有问题(与 #71–#78 的修复提交无关);仅 assert 生效的 Debug 构建暴露,Release 下被 NDEBUG 掩盖成"通过"。

环境

项 值
系统 Ubuntu 24.04.5,GCC 13.3.0,CMake 3.28.3
EUI-NEO dev 4691fc0a5c1fde6f3e22f1ac454ed87c7a17f722
配置 Debug + bundled(GLFW 补丁脚本哈希需先修正,与本问题无关)

复现

cmake -S . -B build-tests -DEUI_BUILD_TEST_FIXTURES=ON -DEUI_DEPS_MODE=bundled \
      -DGLFW_BUILD_WAYLAND=OFF -DCMAKE_BUILD_TYPE=Debug
cmake --build build-tests --target image_stream
./build-tests/image_stream   # 连续 3 次运行均 SIGABRT / exit 134
image_stream: tests/unit/image_stream.cpp:34: int main():
Assertion `!stream->submit({pixels, 4, 2, 16, core::render::ImagePixelFormat::BGRA8, 6})' failed.

根因

  • 测试 tests/unit/image_stream.cpp:34(源自 a969ed5)断言 !submit({... BGRA8 ...}),用例参数合法(4x2、stride 16 = width*4);
  • 实现 core/render/image_stream.cpp:ImageFrame::valid()(约 :104-105)有 case ImagePixelFormat::BGRA8: 显式接受(要求 stride ≥ width*4 且 4 字节对齐——本用例恰好满足),submit()(约 :181-191)仅做 valid() 校验后入队并返回 true;
  • 断言与实现同源自 a969ed5,语义从未对齐,后续提交也未修正。

期望(建议修复,二选一)

  1. BGRA8 既然已支持:把断言改为提交成功,并补一条 BGRA→RGBA 转换内容正确性的用例(BGRA 是相机/BMP 常见格式,覆盖有价值)——倾向此方案;
  2. 若设计上仍要拒绝 BGRA8:恢复实现侧校验。
主要言語
C++
スター
2k
フォーク
177
平均マージ
2日 1時間
マージ済み PR(30日)
13

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

sudoevolve/EUI-NEO のほかの issue

sudoevolve/EUI-NEO の issue をすべて見る

似ている issue

C++ の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。