ci: add missing egl dep to sanitized ci#26712
Conversation
This does not appear to be related :/ Indeed, it happens here too, likely from an orm change: https://github.com/vlang/v/actions/runs/22844849466/job/66258672741 |
|
@dy-tea - Another piece of evidence of a broken CI, but this time in diff --git a/vlib/orm/orm_transaction_test.v b/vlib/orm/orm_transaction_test.v
index 5ef146528..eebce5b02 100644
--- a/vlib/orm/orm_transaction_test.v
+++ b/vlib/orm/orm_transaction_test.v
@@ -1,4 +1,4 @@
-// vtest build: present_sqlite3?
+// vtest build: present_sqlite3? && !sanitize-memory-clang
import db.sqlite
import orm
|
|
@watzon what you think about my comment above? |
|
I think it's better to fix the problem than to just skip the test. |
This line says this is almost impossible. This is false alarm (!). The whole downside of msan is that it strictly requires all components to be built with msan, otherwise it guarantees nothing and will just spew false alarms. |
I've repeated the false alarm in my lab: This is test file: #include <stdio.h>
#include <sqlite3.h>
int main() {
sqlite3 *db;
char *err = 0;
sqlite3_open("test.db", &db);
const char *sql =
"CREATE TABLE IF NOT EXISTS users ("
" id INTEGER PRIMARY KEY AUTOINCREMENT,"
" name TEXT NOT NULL,"
" age INTEGER"
");"
"INSERT INTO users (name, age) VALUES ('Alice', 30);"
"INSERT INTO users (name, age) VALUES ('Bob', 25);";
sqlite3_exec(db, sql, 0, 0, &err);
const char *query = "SELECT id, name, age FROM users;";
sqlite3_stmt *stmt;
sqlite3_prepare_v2(db, query, -1, &stmt, 0);
while (sqlite3_step(stmt) == SQLITE_ROW) {
printf("id=%d name=%s age=%d\n",
sqlite3_column_int (stmt, 0),
sqlite3_column_text(stmt, 1),
sqlite3_column_int (stmt, 2));
}
sqlite3_finalize(stmt);
sqlite3_close(db);
return 0;
}This is library call with false alarm: This is full recompilation of everything under MSan without problems: |
|
So, since it is a failure in sqlite, not in our code, it does indeed make sense to skip that test. We'll just have to hope they fix sqlite, I suppose. |
It is absolutely normal behavior for MSan to generate false alarms on shared objects. The entire sanitizer ecosystem, when running, operates within a single memory region and under full (!) control — when a shared object is fed to it, it does not understand the state of the foreign memory region and generates a false alarm. You are confusing ASan with MSan; they operate in different weight categories and cannot be compared. My real hands-on experiment demonstrated this situation, where the same thing simultaneously generates a false alarm and does not generate one. |
|
I'm going to merge this, as this fix is required for other tests to run correctly. Once my PR and the v2 stuff get merged, it should all (hopefully) even out. |
See CI run on 0c3183c, will wait for it to run to make sure nothing else is missing.