From 0119b17526ae447c5c57784d9deb90c04af51fe5 Mon Sep 17 00:00:00 2001 From: "liang.he" Date: Mon, 18 Nov 2024 20:01:00 +0800 Subject: [PATCH] Correct the table index calculation in aot_instantiation (#3903) `module_inst->table_count = module->import_table_count + module->table_count`, using it as an index will go through `module->import_tables` and `module->tables`, but aot init data is only available for non-import tables. --- core/iwasm/aot/aot_runtime.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/core/iwasm/aot/aot_runtime.c b/core/iwasm/aot/aot_runtime.c index 01e04a3e..5d50f255 100644 --- a/core/iwasm/aot/aot_runtime.c +++ b/core/iwasm/aot/aot_runtime.c @@ -1785,7 +1785,7 @@ aot_instantiate(AOTModule *module, AOTModuleInstance *parent, bool ret = false; #endif - /* Check heap size */ + /* Align and validate heap size */ heap_size = align_uint(heap_size, 8); if (heap_size > APP_HEAP_SIZE_MAX) heap_size = APP_HEAP_SIZE_MAX; @@ -2001,7 +2001,11 @@ aot_instantiate(AOTModule *module, AOTModuleInstance *parent, AOTTableInstance *table_inst; table_elem_type_t *table_data; - table = &module->tables[i]; + /* bypass imported table since AOTImportTable doesn't have init_expr */ + if (i < module->import_table_count) + continue; + + table = &module->tables[i - module->import_table_count]; bh_assert(table); if (table->init_expr.init_expr_type == INIT_EXPR_NONE) {