已关闭
[Bug]: memcheck 跑测试用例autonomous_cursor 发生core #8392
superlchf创建于  8月11日关闭于  26 天前
superlchf成员
8月11日 创建

测试类型

SQL功能

测试版本

7.0.0-RC3

问题描述

[Bug]: memcheck 跑测试用例autonomous_cursor 发生core

操作系统和硬件信息

Linux oepnGauss177 6.6.0-95.0.0.99.oe2403sp164kb.aarch64 #1 SMP Mon Jun 9 11:44:02 CST 2025 aarch64 aarch64 aarch64 GNU/Linux

测试环境

企业版单机

被测功能

预置条件

操作步骤

memcheck 跑测试用例autonomous_cursor 发生core

预期输出

正常

实际输出

core, 内存在释放后使用

日志信息

=================================================================
==1247724==ERROR: AddressSanitizer: heap-use-after-free on address 0xfff9677481b8 at pc 0x000001e76ac4 bp 0xfffb31cd4bb0 sp 0xfffb31cd4bc8
READ of size 8 at 0xfff9677481b8 thread T254
    #0 0x1e76ac0 in setProtectFunc(bool, bool, MemoryContextData*) /home/<user>/openGauss-server/src/common/backend/utils/mmgr/AsanMemoryAllocator.cpp:184
    #1 0x1e754e8 in AsanMemoryAllocator::AllocSetContextCreate(MemoryContextData*, char const*, unsigned long, unsigned long, unsigned long, unsigned long, bool, bool) /home/<user>/openGauss-server/src/common/backend/utils/mmgr/AsanMemoryAllocator.cpp:265
    #2 0x1e2903c in AllocSetContextCreate(MemoryContextData*, char const*, unsigned long, unsigned long, unsigned long, MemoryContextType, unsigned long, bool) /home/<user>/openGauss-server/src/common/backend/utils/mmgr/aset.cpp:396
    #3 0xb82a4c in BuildSessionPackageRuntimeForParentSession(unsigned long, PLpgSQL_execstate*) /home/<user>/openGauss-server/src/common/backend/catalog/gs_package.cpp:1281
    #4 0xb87574 in processAutonmSessionPkgsInException(PLpgSQL_function*) /home/<user>/openGauss-server/src/common/backend/catalog/gs_package.cpp:1761
    #5 0x54dcafc in plpgsql_call_handler /home/<user>/openGauss-server/src/common/pl/plpgsql/src/pl_handler.cpp:1125
    #6 0x358d7b4 in ExecMakeFunctionResultNoSets<true, true> /home/<user>/openGauss-server/src/gausskernel/runtime/executor/execQual.cpp:2958
    #7 0x35610b8 in ExecEvalFunc /home/<user>/openGauss-server/src/gausskernel/runtime/executor/execQual.cpp:3671
    #8 0x354c740 in ExecEvalExpr ../../../../src/include/executor/executor.h:394
    #9 0x3582ce4 in ExecTargetList /home/<user>/openGauss-server/src/gausskernel/runtime/executor/execQual.cpp:7330
    #10 0x3585674 in ExecProjectByRecursion(ProjectionInfo*, ExprDoneCond*) /home/<user>/openGauss-server/src/gausskernel/runtime/executor/execQual.cpp:7582
    #11 0x35843d8 in ExecProject(ProjectionInfo*, ExprDoneCond*) /home/<user>/openGauss-server/src/gausskernel/runtime/executor/execQual.cpp:7486
    #12 0x37652c0 in ExecResult /home/<user>/openGauss-server/src/gausskernel/runtime/executor/nodeResult.cpp:192
    #13 0x354908c in ExecProcNodeFirst /home/<user>/openGauss-server/src/gausskernel/runtime/executor/execProcnode.cpp:807
    #14 0x35255c0 in ExecProcNode ../../../../src/include/executor/executor.h:305
    #15 0x353387c in ExecutePlan /home/<user>/openGauss-server/src/gausskernel/runtime/executor/execMain.cpp:2323
    #16 0x35299b4 in standard_ExecutorRun(QueryDesc*, ScanDirection, long) /home/<user>/openGauss-server/src/gausskernel/runtime/executor/execMain.cpp:680
    #17 0x2f27644 in explain_ExecutorRun /home/<user>/openGauss-server/src/gausskernel/optimizer/commands/auto_explain.cpp:122
    #18 0x21a807c in instr_trace_ExecutorRun(QueryDesc*, ScanDirection, long) /home/<user>/openGauss-server/src/gausskernel/cbb/instruments/trace/instr_trace.cpp:708
    #19 0x352845c in ExecutorRun(QueryDesc*, ScanDirection, long) /home/<user>/openGauss-server/src/gausskernel/runtime/executor/execMain.cpp:517
    #20 0x333ac30 in PortalRunSelect /home/<user>/openGauss-server/src/gausskernel/process/tcop/pquery.cpp:1479
    #21 0x3338a24 in PortalRun(PortalData*, long, bool, _DestReceiver*, _DestReceiver*, char*) /home/<user>/openGauss-server/src/gausskernel/process/tcop/pquery.cpp:1197
    #22 0x32f7bf4 in exec_simple_query /home/<user>/openGauss-server/src/gausskernel/process/tcop/postgres.cpp:3377
    #23 0x3318ebc in ProcessCommandUpperQ /home/<user>/openGauss-server/src/gausskernel/process/tcop/postgres.cpp:10054
    #24 0x3318b68 in ProcessCommandLowerU /home/<user>/openGauss-server/src/gausskernel/process/tcop/postgres.cpp:10011
    #25 0x3317d7c in PostgresMain(int, char**, char const*, char const*) /home/<user>/openGauss-server/src/gausskernel/process/tcop/postgres.cpp:9816
    #26 0x31164f0 in BackendRun /home/<user>/openGauss-server/src/gausskernel/process/postmaster/postmaster.cpp:10318
    #27 0x3142534 in int GaussDbThreadMain<(knl_thread_role)2>(knl_thread_arg*) /home/<user>/openGauss-server/src/gausskernel/process/postmaster/postmaster.cpp:15181
    #28 0x3138204 in InternalThreadFunc /home/<user>/openGauss-server/src/gausskernel/process/postmaster/postmaster.cpp:15913
    #29 0x54c172c in ThreadStarterFunc /home/<user>/openGauss-server/src/common/port/gs_thread.cpp:383
    #30 0xfffd5a7ffbd0  (/usr/lib64/libc.so.6+0x7fbd0)
    #31 0xfffd5a867a88  (/usr/lib64/libc.so.6+0xe7a88)

0xfff9677481b8 is located 184 bytes inside of 496-byte region [0xfff967748100,0xfff9677482f0)
freed by thread T254 here:
    #0 0xfffd6e7202fc in __interceptor_free ../../.././libsanitizer/asan/asan_malloc_linux.cpp:123
    #1 0x1e6642c in void MemoryProtectFunctions::gs_memprot_free<(MemType)1>(void*, unsigned long) /home/<user>/openGauss-server/src/common/backend/utils/mmgr/memprot.cpp:855
    #2 0x1e7c930 in void AsanMemoryAllocator::AllocSetFree<true, false, false>(MemoryContextData*, void*) /home/<user>/openGauss-server/src/common/backend/utils/mmgr/AsanMemoryAllocator.cpp:635
    #3 0x1e4bb1c in pfree(void*) /home/<user>/openGauss-server/src/common/backend/utils/mmgr/mcxt.cpp:1501
    #4 0x1e4e8d4 in FreeMemoryContextList /home/<user>/openGauss-server/src/common/backend/utils/mmgr/mcxt.cpp:2048
    #5 0x1e43ba0 in std_MemoryContextDelete(MemoryContextData*) /home/<user>/openGauss-server/src/common/backend/utils/mmgr/mcxt.cpp:436
    #6 0x36194e0 in FreeExecutorState(EState*) /home/<user>/openGauss-server/src/gausskernel/runtime/executor/execUtils.cpp:341
    #7 0x352abb8 in standard_ExecutorEnd(QueryDesc*) /home/<user>/openGauss-server/src/gausskernel/runtime/executor/execMain.cpp:877
    #8 0x33819f8 in pgaudit_ExecutorEnd /home/<user>/openGauss-server/src/gausskernel/process/tcop/auditfuncs.cpp:2012
    #9 0x3f3c480 in ledger_ExecutorEnd /home/<user>/openGauss-server/src/gausskernel/security/gs_ledger/blockchain.cpp:248
    #10 0x21a92b8 in instr_trace_ExecutorEnd(QueryDesc*) /home/<user>/openGauss-server/src/gausskernel/cbb/instruments/trace/instr_trace.cpp:881
    #11 0x34952c4 in hypo_executorEnd_hook /home/<user>/openGauss-server/src/gausskernel/dbmind/kernel/hypopg_index.cpp:210
    #12 0x352a3c4 in ExecutorEnd(QueryDesc*) /home/<user>/openGauss-server/src/gausskernel/runtime/executor/execMain.cpp:794
    #13 0x37e7714 in SPI_cleanup_executor /home/<user>/openGauss-server/src/gausskernel/runtime/executor/spi.cpp:3451
    #14 0x37e75bc in _SPI_pquery /home/<user>/openGauss-server/src/gausskernel/runtime/executor/spi.cpp:3430
    #15 0x37e2f6c in _SPI_execute_plan0 /home/<user>/openGauss-server/src/gausskernel/runtime/executor/spi.cpp:2926
    #16 0x37e4f8c in _SPI_execute_plan(_SPI_plan*, ParamListInfoData*, SnapshotData*, SnapshotData*, bool, bool, long, bool) /home/<user>/openGauss-server/src/gausskernel/runtime/executor/spi.cpp:3203
    #17 0x37d435c in SPI_execute_plan_with_paramlist(_SPI_plan*, ParamListInfoData*, bool, long) /home/<user>/openGauss-server/src/gausskernel/runtime/executor/spi.cpp:945
    #18 0x55908b8 in exec_stmt_execsql /home/<user>/openGauss-server/src/common/pl/plpgsql/src/pl_exec.cpp:8260
    #19 0x55710c0 in exec_stmt /home/<user>/openGauss-server/src/common/pl/plpgsql/src/pl_exec.cpp:5114
    #20 0x556c0b8 in exec_stmts /home/<user>/openGauss-server/src/common/pl/plpgsql/src/pl_exec.cpp:4756
    #21 0x5567744 in exec_stmt_block /home/<user>/openGauss-server/src/common/pl/plpgsql/src/pl_exec.cpp:4120
    #22 0x5554db8 in plpgsql_exec_function(PLpgSQL_function*, FunctionCallInfoData*, bool, int*) /home/<user>/openGauss-server/src/common/pl/plpgsql/src/pl_exec.cpp:2029
    #23 0x54dc948 in plpgsql_call_handler /home/<user>/openGauss-server/src/common/pl/plpgsql/src/pl_handler.cpp:1105
    #24 0x358d7b4 in ExecMakeFunctionResultNoSets<true, true> /home/<user>/openGauss-server/src/gausskernel/runtime/executor/execQual.cpp:2958
    #25 0x35610b8 in ExecEvalFunc /home/<user>/openGauss-server/src/gausskernel/runtime/executor/execQual.cpp:3671
    #26 0x354c740 in ExecEvalExpr ../../../../src/include/executor/executor.h:394
    #27 0x3582ce4 in ExecTargetList /home/<user>/openGauss-server/src/gausskernel/runtime/executor/execQual.cpp:7330
    #28 0x3585674 in ExecProjectByRecursion(ProjectionInfo*, ExprDoneCond*) /home/<user>/openGauss-server/src/gausskernel/runtime/executor/execQual.cpp:7582
    #29 0x35843d8 in ExecProject(ProjectionInfo*, ExprDoneCond*) /home/<user>/openGauss-server/src/gausskernel/runtime/executor/execQual.cpp:7486

previously allocated by thread T254 here:
    #0 0xfffd6e7205bc in __interceptor_malloc ../../.././libsanitizer/asan/asan_malloc_linux.cpp:145
    #1 0x1e6639c in void* MemoryProtectFunctions::gs_memprot_malloc<(MemType)1>(unsigned long, bool) /home/<user>/openGauss-server/src/common/backend/utils/mmgr/memprot.cpp:835
    #2 0x1e770d4 in DoAllocMemoryInternal(MemoryContextData*, unsigned long, char const*, int, MemoryProtectFuncDef const*, bool, bool) /home/<user>/openGauss-server/src/common/backend/utils/mmgr/AsanMemoryAllocator.cpp:473
    #3 0x1e7c514 in void* AsanMemoryAllocator::AllocSetAlloc<true, false, false>(MemoryContextData*, unsigned long, unsigned long, char const*, int) /home/<user>/openGauss-server/src/common/backend/utils/mmgr/AsanMemoryAllocator.cpp:555
    #4 0x1e49d14 in MemoryAllocFromContext(MemoryContextData*, unsigned long, char const*, int) /home/<user>/openGauss-server/src/common/backend/utils/mmgr/mcxt.cpp:1205
    #5 0x1e48500 in MemoryContextCreate(NodeTag, unsigned long, MemoryContextData*, char const*, char const*, int) /home/<user>/openGauss-server/src/common/backend/utils/mmgr/mcxt.cpp:1067
    #6 0x1e756b0 in AsanMemoryAllocator::AllocSetContextCreate(MemoryContextData*, char const*, unsigned long, unsigned long, unsigned long, unsigned long, bool, bool) /home/<user>/openGauss-server/src/common/backend/utils/mmgr/AsanMemoryAllocator.cpp:285
    #7 0x1e2903c in AllocSetContextCreate(MemoryContextData*, char const*, unsigned long, unsigned long, unsigned long, MemoryContextType, unsigned long, bool) /home/<user>/openGauss-server/src/common/backend/utils/mmgr/aset.cpp:396
    #8 0x3546a98 in ExecInitNode(Plan*, EState*, int) /home/<user>/openGauss-server/src/gausskernel/runtime/executor/execProcnode.cpp:579
    #9 0x352f18c in InitPlan(QueryDesc*, int) /home/<user>/openGauss-server/src/gausskernel/runtime/executor/execMain.cpp:1593
    #10 0x3527964 in standard_ExecutorStart(QueryDesc*, int) /home/<user>/openGauss-server/src/gausskernel/runtime/executor/execMain.cpp:411
    #11 0xfffd4c581b0c in gs_audit_executor_start_hook /home/<user>/openGauss-server/contrib/security_plugin/gs_policy_plugin.cpp:1697
    #12 0x2f2726c in explain_ExecutorStart /home/<user>/openGauss-server/src/gausskernel/optimizer/commands/auto_explain.cpp:89
    #13 0x21a7a30 in instr_trace_ExecutorStart(QueryDesc*, int) /home/<user>/openGauss-server/src/gausskernel/cbb/instruments/trace/instr_trace.cpp:642
    #14 0x35265b0 in ExecutorStart(QueryDesc*, int) /home/<user>/openGauss-server/src/gausskernel/runtime/executor/execMain.cpp:227
    #15 0x37e5ec8 in _SPI_pquery /home/<user>/openGauss-server/src/gausskernel/runtime/executor/spi.cpp:3330
    #16 0x37e2f6c in _SPI_execute_plan0 /home/<user>/openGauss-server/src/gausskernel/runtime/executor/spi.cpp:2926
    #17 0x37e4f8c in _SPI_execute_plan(_SPI_plan*, ParamListInfoData*, SnapshotData*, SnapshotData*, bool, bool, long, bool) /home/<user>/openGauss-server/src/gausskernel/runtime/executor/spi.cpp:3203
    #18 0x37d435c in SPI_execute_plan_with_paramlist(_SPI_plan*, ParamListInfoData*, bool, long) /home/<user>/openGauss-server/src/gausskernel/runtime/executor/spi.cpp:945
    #19 0x55908b8 in exec_stmt_execsql /home/<user>/openGauss-server/src/common/pl/plpgsql/src/pl_exec.cpp:8260
    #20 0x55710c0 in exec_stmt /home/<user>/openGauss-server/src/common/pl/plpgsql/src/pl_exec.cpp:5114
    #21 0x556c0b8 in exec_stmts /home/<user>/openGauss-server/src/common/pl/plpgsql/src/pl_exec.cpp:4756
    #22 0x5567744 in exec_stmt_block /home/<user>/openGauss-server/src/common/pl/plpgsql/src/pl_exec.cpp:4120
    #23 0x5554db8 in plpgsql_exec_function(PLpgSQL_function*, FunctionCallInfoData*, bool, int*) /home/<user>/openGauss-server/src/common/pl/plpgsql/src/pl_exec.cpp:2029
    #24 0x54dc948 in plpgsql_call_handler /home/<user>/openGauss-server/src/common/pl/plpgsql/src/pl_handler.cpp:1105
    #25 0x358d7b4 in ExecMakeFunctionResultNoSets<true, true> /home/<user>/openGauss-server/src/gausskernel/runtime/executor/execQual.cpp:2958
    #26 0x35610b8 in ExecEvalFunc /home/<user>/openGauss-server/src/gausskernel/runtime/executor/execQual.cpp:3671
    #27 0x354c740 in ExecEvalExpr ../../../../src/include/executor/executor.h:394
    #28 0x3582ce4 in ExecTargetList /home/<user>/openGauss-server/src/gausskernel/runtime/executor/execQual.cpp:7330
    #29 0x3585674 in ExecProjectByRecursion(ProjectionInfo*, ExprDoneCond*) /home/<user>/openGauss-server/src/gausskernel/runtime/executor/execQual.cpp:7582

Thread T254 created by T0 here:
    #0 0xfffd6e6d55b4 in __interceptor_pthread_create ../../.././libsanitizer/asan/asan_interceptors.cpp:214
    #1 0x54c26f8 in gs_thread_create_ex(gs_thread_t*, void* (*)(void*), int, void*, cpu_set_t*) /home/<user>/openGauss-server/src/common/port/gs_thread.cpp:829
    #2 0x3138460 in initialize_thread(ThreadArg*) /home/<user>/openGauss-server/src/gausskernel/process/postmaster/postmaster.cpp:15929
    #3 0x3138e2c in initialize_worker_thread(knl_thread_role, Port*, void*) /home/<user>/openGauss-server/src/gausskernel/process/postmaster/postmaster.cpp:16013
    #4 0x33b2474 in ThreadPoolWorker::StartUp() /home/<user>/openGauss-server/src/gausskernel/process/threadpool/threadpool_worker.cpp:137
    #5 0x3396c90 in ThreadPoolGroup::AddWorker(int) /home/<user>/openGauss-server/src/gausskernel/process/threadpool/threadpool_group.cpp:162
    #6 0x3396b08 in ThreadPoolGroup::InitWorkerSentry() /home/<user>/openGauss-server/src/gausskernel/process/threadpool/threadpool_group.cpp:154
    #7 0x33965a0 in ThreadPoolGroup::Init(bool) /home/<user>/openGauss-server/src/gausskernel/process/threadpool/threadpool_group.cpp:127
    #8 0x338bf38 in ThreadPoolControler::Init(bool) /home/<user>/openGauss-server/src/gausskernel/process/threadpool/threadpool_controler.cpp:164
    #9 0x30e3168 in ServerLoop /home/<user>/openGauss-server/src/gausskernel/process/postmaster/postmaster.cpp:4151
    #10 0x30dd3bc in PostmasterMain(int, char**) /home/<user>/openGauss-server/src/gausskernel/process/postmaster/postmaster.cpp:3407
    #11 0x301bd4c in main /home/<user>/openGauss-server/src/gausskernel/process/main/main.cpp:420
    #12 0xfffd5a7a76c0  (/usr/lib64/libc.so.6+0x276c0)
    #13 0xfffd5a7a77a4 in __libc_start_main (/usr/lib64/libc.so.6+0x277a4)
    #14 0xa1d1ac in _start (/home/<user>/openGauss-server/src/test/regress/tmp_check/install/home/<user>/openGauss-server/mppdb_temp_install/bin/gaussdb+0xa1d1ac)

SUMMARY: AddressSanitizer: heap-use-after-free /home/<user>/openGauss-server/src/common/backend/utils/mmgr/AsanMemoryAllocator.cpp:184 in setProtectFunc(bool, bool, MemoryContextData*)
Shadow bytes around the buggy address:
  0x200f2cee8fe0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x200f2cee8ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x200f2cee9000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fa fa
  0x200f2cee9010: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x200f2cee9020: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
=>0x200f2cee9030: fd fd fd fd fd fd fd[fd]fd fd fd fd fd fd fd fd
  0x200f2cee9040: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x200f2cee9050: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fa fa
  0x200f2cee9060: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x200f2cee9070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x200f2cee9080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
  Shadow gap:              cc
==1247724==ABORTING

提单组织

内部开发

测试代码

使用最小用例

-- minimal repro: autonomous package deadlock exception path UAF
drop table if exists t2_test;
create table t2_test(a int);
insert into t2_test values (1), (2);

create or replace package pck1 as
  procedure p1;
  procedure p2(c1 out sys_refcursor);
end pck1;
/

create or replace package body pck1 as
procedure p1 as
  c1 sys_refcursor;
begin
  delete from t2_test;
  pg_sleep(30);
  p2(c1);
end;

procedure p2(c1 out sys_refcursor) as
  PRAGMA AUTONOMOUS_TRANSACTION;
begin
  update t2_test set a = 10;
  open c1 for select * from t2_test;
end;
end pck1;
/

call pck1.p1();
likedislike
Ssuperlchf成员
8月11日 添加了label:bug
opengauss_bot
opengauss_bot成员
8月11日 评论:

This issue requires an assignee. Since you haven't specified one, we've assigned TestManager as the default assignee for this issue.

likedislike
opengauss_botopengauss_bot成员
8月11日 将 TestManager 设为负责人
opengauss_botopengauss_bot成员
8月11日 添加了label:sig/StorageEngine,sig/AI,sig/CM,sig/CloudNative,sig/SecurityTechnology,sig/SQLEngine
opengauss_bot
opengauss_bot成员
8月11日 评论:

Welcome To openGauss Community

Hey @superlchf , thanks for your contribution to the community.

Bot Usage Manual

I'm the Bot here serving you. You can find the instructions on how to interact with me at Here . That means you can comment below every pull request or issue to trigger Bot Commands.

Contact Guide

If you have any questions, please contact the SIG: StorageEngine, AI, CM, CloudNative, SecurityTechnology, SQLEngine ,
and any of the maintainers: @CarrotGo, @chendong76, @chenxiaobin19, @congzhou2603, @dodders, @hwworkholic, @jemappellehc, @muyulinzhong, @quemingjian, @shenzheng4, @shirley_zhengx, @superlchf, @totaj, @wlff234, @wofanzheng, @ywzq1161327784 ,
and any of the committers: @Igali, @bihua111, @cailei19, @h_ray, @levy53071, @libiao2024, @lihaixiao, @mrzack, @wangfeihuo, @wuyuechuan, @xiong_xjun, @zhangfengzhi123, @zhangxubo, @zhangzq131, @zjh_hw .

likedislike
Ssuperlchf成员
8月11日 将 superlchf 设为负责人,移除负责人 TestManager
sungang14sungang14成员
8月13日 issue优先级由 无优先级 改变为 主要
sungang14sungang14成员
8月13日 关联了看板:openGauss 7.0.0-LTS
Ssuperlchf成员
8月13日 关联了pull request:[Bugfix]修复autonomous_cursor 问题
opengauss_botopengauss_bot成员
8月15日 关闭了 issue
ywzq1161327784ywzq1161327784成员
8月18日 将 agoniqwq 设为负责人
ywzq1161327784ywzq1161327784成员
8月18日 移除了负责人 superlchf
ywzq1161327784ywzq1161327784成员
8月18日 issue状态由 待办的 改变为 已完成
ywzq1161327784ywzq1161327784成员
8月18日 重新打开了 issue
wangzecheng00970482
wangzecheng00970482成员
8月25日 评论:

image.png
问题已修复

likedislike
wangzecheng00970482wangzecheng00970482成员
8月26日 issue状态由 已完成 改变为 待回归
l1azzzy
l1azzzy成员
26 天前 评论:

验收日期:2026-8-31
验收版本:7.0.0.B020
验收结论:验收通过
image.png

likedislike
l1azzzyl1azzzy成员
26 天前 issue状态由 待回归 改变为 已验收
l1azzzyl1azzzy成员
26 天前 关闭了 issue