Repository: ispras/oss-sydr-fuzz
Pull request #271: Update integration with LuaJIT
Author: login: ligurio
Created: 2025-04-23T17:23:48Z | Merged: 2025-04-25T10:31:58Z

The patch updates integration with LuaJIT project and brings the latest version of tests [1] to the sydr-oss-fuzz.

Closes #269

1. ligurio/lua-c-api-tests@dece9f2

Linked issue #269: Update Lua and LuaJIT integrations
LuaJIT integration uses commit that was done two years ago [^1].
The same for Lua integration [^2]. Many new tests were added since then, corpus has been significantly updated.
I propose to update these integrations and always use tests (https://github.com/ligurio/lua-c-api-tests) from a "master" branch.

[^1]: https://github.com/ispras/oss-sydr-fuzz/blob/e080fb5a242e9aab1e56a2b41ede12b73edf5772/projects/luajit/Dockerfile#L32C18-L32C58
[^2]: https://github.com/ispras/oss-sydr-fuzz/blob/master/projects/lua/Dockerfile
Linked issue comments: user: login: ligurio
created_at: 2025-04-17T10:28:00Z
body: I would do it myself, but I don't have a sydr-fyzz to test patches.
author_association: CONTRIBUTOR
user: login: apach301
created_at: 2025-04-22T11:46:09Z
body: > I would do it myself, but I don't have a sydr-fyzz to test patches.

It would be great! You don't necessarily need sydr-fuzz, just check that docker is successfully built and fuzztarget is launched with corresponding fuzzer (should be pre-installed in docker). There are two base docker images to build: sydr/ubuntu20.04-sydr-fuzz and sydr/ubuntu22.04-sydr-fuzz (could be pulled from docker hub). luzer is supported only on ubuntu22.04.
author_association: MEMBER

Diff:
diff --git a/projects/luajit/Dockerfile b/projects/luajit/Dockerfile
index afbf2dff3..591e13875 100644
--- a/projects/luajit/Dockerfile
+++ b/projects/luajit/Dockerfile
@@ -1,4 +1,4 @@
-# Copyright 2023 Sergey Bronnikov
+# Copyright 2023-2025 Sergey Bronnikov
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -29,10 +29,10 @@ RUN git clone https://github.com/ligurio/lua-c-api-tests testdir
 WORKDIR testdir
 
 # Checkout specified commit. It could be updated later.
-RUN git checkout f0b2821c0defc86b0755fc0cf96ad9386bfcfe44
+RUN git checkout dece9f2ad54ab2b117e00805010e389f5db0204c
 
 # Clone corpus from GitHub.
-RUN git clone --depth 1 https://github.com/ligurio/lua-c-api-corpus corpus
+RUN git clone --depth 1 --branch cfl https://github.com/ligurio/lua-c-api-corpus corpus
 
 # Copy build script and fuzz targets for libFuzzer and Sydr.
 COPY build.sh testdir/
@@ -41,3 +41,5 @@ COPY build.sh testdir/
 RUN testdir/build.sh
 
 WORKDIR /
+
+RUN find corpus_* -type d -exec rm -rf "{}" \;
diff --git a/projects/luajit/README.md b/projects/luajit/README.md
index f8be25313..2c57e63da 100644
--- a/projects/luajit/README.md
+++ b/projects/luajit/README.md
@@ -45,7 +45,7 @@ Building HTML report:
 
 ## Alternative Fuzz Targets
 
-LuaJIT project has 7 fuzz targets.
+LuaJIT project has 9 fuzz targets.
 
 ### lua_dump
 
@@ -79,4 +79,8 @@ LuaJIT project has 7 fuzz targets.
 
     # sydr-fuzz -c luaL_traceback.toml run
 
+### torture
+
+    # sydr-fuzz -c torture.toml run
+
 [luajit-homepage]: http://luajit.org/
diff --git a/projects/luajit/build.sh b/projects/luajit/build.sh
index 873ab294e..0505a3b2a 100755
--- a/projects/luajit/build.sh
+++ b/projects/luajit/build.sh
@@ -2,7 +2,7 @@
 #
 # Copyright 2021 Google LLC
 # Modifications copyright (C) 2021 ISP RAS
-# Modifications copyright (C) 2023 Sergey Bronnikov
+# Modifications copyright (C) 2023-2025 Sergey Bronnikov
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -20,20 +20,22 @@
 
 CC=clang
 CXX=clang++
-CFLAGS="-g -fsanitize=fuzzer-no-link,address,integer,bounds,null,undefined,float-divide-by-zero"
-CXXFLAGS="-g -fsanitize=fuzzer-no-link,address,integer,bounds,null,undefined,float-divide-by-zero"
+CFLAGS="-g"
+CXXFLAGS="-g"
 
 cd /testdir
 
 : ${LD:="${CXX}"}
 : ${LDFLAGS:="${CXXFLAGS}"}  # to make sure we link with sanitizer runtime
 
+GIT_HASH=eec7a8016c3381b949b5d84583800d05897fa960
+
 cmake_args=(
     -DUSE_LUAJIT=ON
-    -DLUA_VERSION=ff6c496ba1b51ed360065cbc5259f62becd70daa
+    -DLUA_VERSION="${GIT_HASH}"
     -DOSS_FUZZ=OFF
-    -DENABLE_ASAN=OFF
-    -DENABLE_UBSAN=OFF
+    -DENABLE_ASAN=ON
+    -DENABLE_UBSAN=ON
     -DCMAKE_BUILD_TYPE=Debug
 
     # C compiler
@@ -61,7 +63,7 @@ for f in $(find build/tests/ -name '*_test' -type f);
 do
   name=$(basename $f);
   module=$(echo $name | sed 's/_test//')
-  corpus_dir="corpus/$module"
+  corpus_dir="corpus/corpus/${module}_test"
   echo "Copying for $module";
   cp $f /
   [[ -e $corpus_dir ]] && cp -r $corpus_dir /corpus_$module
@@ -79,10 +81,10 @@ export AFL_LLVM_DICT2FILE_NO_MAIN=1
 
 cmake_args=(
     -DUSE_LUAJIT=ON
-    -DLUA_VERSION=ff6c496ba1b51ed360065cbc5259f62becd70daa
+    -DLUA_VERSION="${GIT_HASH}"
     -DOSS_FUZZ=OFF
-    -DENABLE_ASAN=OFF
-    -DENABLE_UBSAN=OFF
+    -DENABLE_ASAN=ON
+    -DENABLE_UBSAN=ON
     -DCMAKE_BUILD_TYPE=Debug
 
     # C compiler
@@ -117,10 +119,10 @@ unset AFL_LLVM_DICT2FILE_NO_MAIN
 export AFL_LLVM_CMPLOG=1
 cmake_args=(
     -DUSE_LUAJIT=ON
-    -DLUA_VERSION=ff6c496ba1b51ed360065cbc5259f62becd70daa
+    -DLUA_VERSION="${GIT_HASH}"
     -DOSS_FUZZ=OFF
-    -DENABLE_ASAN=OFF
-    -DENABLE_UBSAN=OFF
+    -DENABLE_ASAN=ON
+    -DENABLE_UBSAN=ON
     -DCMAKE_BUILD_TYPE=Debug
 
     # C compiler
@@ -159,11 +161,11 @@ LDFLAGS=""
 
 cmake_args=(
     -DUSE_LUAJIT=ON
-    -DLUA_VERSION=ff6c496ba1b51ed360065cbc5259f62becd70daa
+    -DLUA_VERSION="${GIT_HASH}"
     -DOSS_FUZZ=ON
     -DCMAKE_BUILD_TYPE=Debug
-    -DENABLE_ASAN=OFF
-    -DENABLE_UBSAN=OFF
+    -DENABLE_ASAN=ON
+    -DENABLE_UBSAN=ON
 
     # C compiler
     -DCMAKE_C_COMPILER="${CC}"
@@ -204,11 +206,11 @@ LDFLAGS=""
 
 cmake_args=(
     -DUSE_LUAJIT=ON
-    -DLUA_VERSION=ff6c496ba1b51ed360065cbc5259f62becd70daa
+    -DLUA_VERSION="${GIT_HASH}"
     -DOSS_FUZZ=ON
     -DCMAKE_BUILD_TYPE=Debug
-    -DENABLE_ASAN=OFF
-    -DENABLE_UBSAN=OFF
+    -DENABLE_ASAN=ON
+    -DENABLE_UBSAN=ON
     -DENABLE_COV=ON
 
     # C compiler
diff --git a/projects/luajit/ffi_cdef_proto_test-afl++.toml b/projects/luajit/ffi_cdef_proto_test-afl++.toml
new file mode 100644
index 000000000..8d8e36aeb
--- /dev/null
+++ b/projects/luajit/ffi_cdef_proto_test-afl++.toml
@@ -0,0 +1,37 @@
+# Copyright 2025 Sergey Bronnikov
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+[sydr]
+args = "--wait-jobs -s 90 -j2"
+target = "/ffi_cdef_proto_sydr @@"
+jobs = 2
+
+[[aflplusplus]]
+args = "-t 60000 -i /corpus_ffi_cdef_proto -x /ffi_cdef_proto.dict -x /afl++.dict"
+target = "/ffi_cdef_proto_afl @@"
+[aflplusplus.env]
+ASAN_OPTIONS = "hard_rss_limit_mb=0,malloc_context_size=100"
+UBSAN_OPTIONS = "malloc_context_size=100"
+
+[[aflplusplus]]
+args = "-m none -l AT -c /ffi_cdef_proto_cmplog -t 60000 -i /corpus_ffi_cdef_proto -x /ffi_cdef_proto.dict -x /afl++.dict"
+target = "/ffi_cdef_proto_afl @@"
+[aflplusplus.env]
+ASAN_OPTIONS = "hard_rss_limit_mb=0,malloc_context_size=100"
+UBSAN_OPTIONS = "malloc_context_size=100"
+
+[cov]
+target = "/ffi_cdef_proto_cov @@"
diff --git a/projects/luajit/luaL_dostring_test-afl++.toml b/projects/luajit/ffi_cdef_proto_test-lf.toml
similarity index 63%
rename from projects/luajit/luaL_dostring_test-afl++.toml
rename to projects/luajit/ffi_cdef_proto_test-lf.toml
index da8d02220..a57fb3e5e 100644
--- a/projects/luajit/luaL_dostring_test-afl++.toml
+++ b/projects/luajit/ffi_cdef_proto_test-lf.toml
@@ -1,4 +1,4 @@
-# Copyright 2023 Sergey Bronnikov
+# Copyright 2025 Sergey Bronnikov
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -16,16 +16,12 @@
 
 [sydr]
 args = "--wait-jobs -s 90 -j2"
-target = "/luaL_dostring_sydr @@"
+target = "/ffi_cdef_proto_sydr @@"
 jobs = 2
 
-[[aflplusplus]]
-args = "-t 60000 -i /corpus_luaL_dostring -x /luaL_dostring.dict -x /afl++.dict"
-target = "/luaL_dostring_afl @@"
-
-[[aflplusplus]]
-args = "-m none -l AT -c /luaL_dostring_cmplog -t 60000 -i /corpus_luaL_dostring -x /luaL_dostring.dict -x /afl++.dict"
-target = "/luaL_dostring_afl @@"
+[libfuzzer]
+path = "/ffi_cdef_proto_test"
+args = "-dict=/ffi_cdef_proto.dict /corpus_ffi_cdef_proto"
 
 [cov]
-target = "/luaL_dostring_cov @@"
+target = "/ffi_cdef_proto_cov @@"
diff --git a/projects/luajit/lua_dump_test-afl++.toml b/projects/luajit/lua_dump_test-afl++.toml
new file mode 100644
index 000000000..1e4be143f
--- /dev/null
+++ b/projects/luajit/lua_dump_test-afl++.toml
@@ -0,0 +1,37 @@
+# Copyright 2025 Sergey Bronnikov
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+[sydr]
+args = "--wait-jobs -s 90 -j2"
+target = "/lua_dump_sydr @@"
+jobs = 2
+
+[[aflplusplus]]
+args = "-t 60000 -i /corpus_lua_dump -x /lua_dump.dict -x /afl++.dict"
+target = "/lua_dump_afl @@"
+[aflplusplus.env]
+ASAN_OPTIONS = "hard_rss_limit_mb=0,malloc_context_size=100"
+UBSAN_OPTIONS = "malloc_context_size=100"
+
+[[aflplusplus]]
+args = "-m none -l AT -c /lua_dump_cmplog -t 60000 -i /corpus_lua_dump -x /lua_dump.dict -x /afl++.dict"
+target = "/lua_dump_afl @@"
+[aflplusplus.env]
+ASAN_OPTIONS = "hard_rss_limit_mb=0,malloc_context_size=100"
+UBSAN_OPTIONS = "malloc_context_size=100"
+
+[cov]
+target = "/lua_dump_cov @@"
diff --git a/projects/luajit/lua_dump_test-lf.toml b/projects/luajit/lua_dump_test-lf.toml
new file mode 100644
index 000000000..4afc1b448
--- /dev/null
+++ b/projects/luajit/lua_dump_test-lf.toml
@@ -0,0 +1,27 @@
+# Copyright 2025 Sergey Bronnikov
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+[sydr]
+args = "--wait-jobs -s 90 -j2"
+target = "/lua_dump_sydr @@"
+jobs = 2
+
+[libfuzzer]
+path = "/lua_dump_test"
+args = "-dict=/lua_dump.dict /corpus_lua_dump"
+
+[cov]
+target = "/lua_dump_cov @@"
diff --git a/projects/luajit/lua_load_test-afl++.toml b/projects/luajit/lua_load_test-afl++.toml
new file mode 100644
index 000000000..1d50da219
--- /dev/null
+++ b/projects/luajit/lua_load_test-afl++.toml
@@ -0,0 +1,37 @@
+# Copyright 2023 Sergey Bronnikov
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+[sydr]
+args = "--wait-jobs -s 90 -j2"
+target = "/lua_load_sydr @@"
+jobs = 2
+
+[[aflplusplus]]
+args = "-t 60000 -i /corpus_lua_load -x /lua_load.dict -x /afl++.dict"
+target = "/lua_load_afl @@"
+[aflplusplus.env]
+ASAN_OPTIONS = "hard_rss_limit_mb=0,malloc_context_size=100"
+UBSAN_OPTIONS = "malloc_context_size=100"
+
+[[aflplusplus]]
+args = "-m none -l AT -c /lua_load_cmplog -t 60000 -i /corpus_lua_load -x /lua_load.dict -x /afl++.dict"
+target = "/lua_load_afl @@"
+[aflplusplus.env]
+ASAN_OPTIONS = "hard_rss_limit_mb=0,malloc_context_size=100"
+UBSAN_OPTIONS = "malloc_context_size=100"
+
+[cov]
+target = "/lua_load_cov @@"
diff --git a/projects/luajit/luaL_dostring_test-lf.toml b/projects/luajit/lua_load_test-lf.toml
similarity index 82%
rename from projects/luajit/luaL_dostring_test-lf.toml
rename to projects/luajit/lua_load_test-lf.toml
index e24da4b11..9ddd41fe4 100644
--- a/projects/luajit/luaL_dostring_test-lf.toml
+++ b/projects/luajit/lua_load_test-lf.toml
@@ -16,12 +16,12 @@
 
 [sydr]
 args = "--wait-jobs -s 90 -j2"
-target = "/luaL_dostring_sydr @@"
+target = "/lua_load_sydr @@"
 jobs = 2
 
 [libfuzzer]
-path = "/luaL_dostring_test"
-args = "-dict=/luaL_dostring.dict /corpus_luaL_dostring"
+path = "/lua_load_test"
+args = "-dict=/lua_load.dict /corpus_lua_load"
 
 [cov]
-target = "/luaL_dostring_cov @@"
+target = "/lua_load_cov @@"
diff --git a/projects/luajit/torture_test-afl++.toml b/projects/luajit/torture_test-afl++.toml
new file mode 100644
index 000000000..641e09007
--- /dev/null
+++ b/projects/luajit/torture_test-afl++.toml
@@ -0,0 +1,37 @@
+# Copyright 2025 Sergey Bronnikov
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+[sydr]
+args = "--wait-jobs -s 90 -j2"
+target = "/torture_sydr @@"
+jobs = 2
+
+[[aflplusplus]]
+args = "-t 60000 -i /corpus_torture -x /torture.dict -x /afl++.dict"
+target = "/torture_afl @@"
+[aflplusplus.env]
+ASAN_OPTIONS = "hard_rss_limit_mb=0,malloc_context_size=100"
+UBSAN_OPTIONS = "malloc_context_size=100"
+
+[[aflplusplus]]
+args = "-m none -l AT -c /torture_cmplog -t 60000 -i /corpus_torture -x /torture.dict -x /afl++.dict"
+target = "/torture_afl @@"
+[aflplusplus.env]
+ASAN_OPTIONS = "hard_rss_limit_mb=0,malloc_context_size=100"
+UBSAN_OPTIONS = "malloc_context_size=100"
+
+[cov]
+target = "/torture_cov @@"
diff --git a/projects/luajit/torture_test-lf.toml b/projects/luajit/torture_test-lf.toml
new file mode 100644
index 000000000..3afb02847
--- /dev/null
+++ b/projects/luajit/torture_test-lf.toml
@@ -0,0 +1,27 @@
+# Copyright 2025 Sergey Bronnikov
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+[sydr]
+args = "--wait-jobs -s 90 -j2"
+target = "/torture_sydr @@"
+jobs = 2
+
+[libfuzzer]
+path = "/torture_test"
+args = "-dict=/torture.dict /corpus_torture"
+
+[cov]
+target = "/torture_cov @@"


Reviews:
user: login: apach301
state: CHANGES_REQUESTED
author_association: MEMBER
submitted_at: 2025-04-24T10:59:37Z
user: login: ligurio
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-24T11:23:45Z
user: login: apach301
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-24T11:37:15Z
user: login: ligurio
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-24T16:26:59Z
user: login: apach301
state: APPROVED
author_association: MEMBER
submitted_at: 2025-04-25T10:31:32Z

Review comments:
diff_hunk: @@ -61,7 +63,7 @@ for f in $(find build/tests/ -name '*_test' -type f);
 do
   name=$(basename $f);
   module=$(echo $name | sed 's/_test//')
-  corpus_dir="corpus/$module"
+  corpus_dir="corpus/corpus/$module"
path: projects/luajit/build.sh
user: login: apach301
body: corpus_dir="corpus/corpus/$module"
```suggestion
  corpus_dir="corpus/corpus/${module}_test"
```
created_at: 2025-04-24T10:59:33Z
author_association: MEMBER
diff_hunk: @@ -61,7 +63,7 @@ for f in $(find build/tests/ -name '*_test' -type f);
 do
   name=$(basename $f);
   module=$(echo $name | sed 's/_test//')
-  corpus_dir="corpus/$module"
+  corpus_dir="corpus/corpus/$module"
path: projects/luajit/build.sh
user: login: ligurio
body: Fixed:

```diff
--- a/projects/luajit/build.sh
+++ b/projects/luajit/build.sh
@@ -62,7 +62,6 @@ cmake --build build --parallel
 for f in $(find build/tests/ -name '*_test' -type f);
 do
   name=$(basename $f);
-  module=$(echo $name | sed 's/_test//')
   corpus_dir="corpus/corpus/$module"
   echo "Copying for $module";
   cp $f /
```
created_at: 2025-04-24T11:23:45Z
author_association: CONTRIBUTOR
diff_hunk: @@ -61,7 +63,7 @@ for f in $(find build/tests/ -name '*_test' -type f);
 do
   name=$(basename $f);
   module=$(echo $name | sed 's/_test//')
-  corpus_dir="corpus/$module"
+  corpus_dir="corpus/corpus/$module"
path: projects/luajit/build.sh
user: login: apach301
body: I'd prefer proposed changes:
1. $module is undefined
2. without sed it would have '_test' suffix. It would require renaming corpuses and dictionaries in every toml file.
created_at: 2025-04-24T11:37:15Z
author_association: MEMBER
diff_hunk: @@ -61,7 +63,7 @@ for f in $(find build/tests/ -name '*_test' -type f);
 do
   name=$(basename $f);
   module=$(echo $name | sed 's/_test//')
-  corpus_dir="corpus/$module"
+  corpus_dir="corpus/corpus/$module"
path: projects/luajit/build.sh
user: login: ligurio
body: Updated:

```diff
--- a/projects/luajit/build.sh                                                                                                                                
+++ b/projects/luajit/build.sh                                                 
@@ -62,7 +62,8 @@ cmake --build build --parallel                                                                                                              
 for f in $(find build/tests/ -name '*_test' -type f);      
 do                                                                            
   name=$(basename $f);                                                        
-  corpus_dir="corpus/corpus/$module"                                                                                                                         
+  module=$(echo $name | sed 's/_test//')                                      
+  corpus_dir="corpus/corpus/${module}_test"                       
   echo "Copying for $module";                                                                                                                                
   cp $f /                                                                                                                                                    
   [[ -e $corpus_dir ]] && cp -r $corpus_dir /corpus_$module 
```
created_at: 2025-04-24T16:26:59Z
author_association: CONTRIBUTOR

PR comments:
user: login: ligurio
created_at: 2025-04-23T19:49:21Z
body: ```
7.69 /usr/bin/ld: minilua.c:(.text.main[main]+0x19c4): undefined reference to `__asan_report_store4'                                                       22:37 [9427/12405]
57.69 /usr/bin/ld: minilua.c:(.text.main[main]+0x19d9): undefined reference to `__asan_report_store4'                                                                         
57.69 /usr/bin/ld: minilua.c:(.text.main[main]+0x19f2): undefined reference to `__asan_report_load4'                                                                          
57.69 /usr/bin/ld: minilua.c:(.text.main[main]+0x1a0b): undefined reference to `__asan_report_store4'                                                                         
57.69 /usr/bin/ld: minilua.c:(.text.main[main]+0x1a20): undefined reference to `__asan_report_load4'                                                                          
57.69 /usr/bin/ld: minilua.c:(.text.main[main]+0x1a35): undefined reference to `__asan_report_store4'                                                                         
57.69 /usr/bin/ld: minilua.c:(.text.main[main]+0x1a4a): undefined reference to `__asan_report_store4'                                                                         
57.69 /usr/bin/ld: minilua.c:(.text.main[main]+0x1a56): undefined reference to `__asan_handle_no_return'                                                                      
57.69 /usr/bin/ld: minilua.c:(.text.main[main]+0x1a64): undefined reference to `__asan_handle_no_return'                                                                      
57.69 /usr/bin/ld: minilua.c:(.text.main[main]+0x1a72): undefined reference to `__asan_handle_no_return'                                                                      
57.69 /usr/bin/ld: minilua.c:(.text.main[main]+0x1a89): undefined reference to `__asan_report_store4'                                                                         
57.69 /usr/bin/ld: minilua.c:(.text.main[main]+0x1aa2): undefined reference to `__asan_report_store4'                                                                         
57.69 /usr/bin/ld: minilua.c:(.text.main[main]+0x1aae): undefined reference to `__asan_handle_no_return'                                                                      
57.69 /usr/bin/ld: minilua.c:(.text.main[main]+0x1ac2): undefined reference to `__asan_report_load1'                                                                          
57.69 /usr/bin/ld: minilua.c:(.text.main[main]+0x1ad7): undefined reference to `__asan_report_store4'                                                                         
57.69 /usr/bin/ld: minilua.c:(.text.main[main]+0x1aed): undefined reference to `__asan_report_load1'                                                                          
57.69 /usr/bin/ld: minilua.c:(.text.main[main]+0x1af9): undefined reference to `__asan_handle_no_return'                                                                      
57.69 /usr/bin/ld: minilua.c:(.text.main[main]+0x1b11): undefined reference to `__asan_report_store1'                                                                         
57.69 /usr/bin/ld: minilua.c:(.text.main[main]+0x1b26): undefined reference to `__asan_report_load4'                                                                          
57.69 /usr/bin/ld: minilua.c:(.text.main[main]+0x1b32): undefined reference to `__asan_handle_no_return'                                                                      
57.69 /usr/bin/ld: minilua.c:(.text.main[main]+0x1b40): undefined reference to `__asan_handle_no_return'                                                                      
57.69 /usr/bin/ld: minilua.c:(.text.main[main]+0x1b4e): undefined reference to `__asan_handle_no_return'                                                                      
57.69 /usr/bin/ld: minilua.c:(.text.main[main]+0x1b5c): undefined reference to `__asan_handle_no_return'                                                                      
57.69 /usr/bin/ld: minilua.c:(.text.main[main]+0x1b6a): undefined reference to `__asan_handle_no_return'                                                                      
57.69 /usr/bin/ld: host/minilua.o:minilua.c:(.text.main[main]+0x1b78): more undefined references to `__asan_handle_no_return' follow                                          
57.69 /usr/bin/ld: host/minilua.o: in function `main':      
```
author_association: CONTRIBUTOR
user: login: ligurio
created_at: 2025-04-24T07:41:07Z
body: @apach301 could you please review?
Building in Docker container is finished successfully.
author_association: CONTRIBUTOR
user: login: ligurio
created_at: 2025-04-25T10:03:53Z
body: @apach301 Ok?
author_association: CONTRIBUTOR
user: login: apach301
created_at: 2025-04-25T10:31:51Z
body: @ligurio Thanks!


author_association: MEMBER