- Log messages, script output, test labels, Makefile errors and comments are English. Red log lines start with "[RED] " (was 【红】). - Shader map stage column: vertex / pixel / compute / geometry / hull / domain (generators, dmsh_build / dmsh_facts and nvn_mtl.m stage_of follow). - The NSP script's regexes match the new shader_split.py / dmsh_build.py summary lines; patch_nso cut scopes are all / host-only. - Host UI text table (dm_i18n_tab.h) is English only; dm_lang_zh() removed. - Text that matches game data (t_swkbd.c, t_textbox.c) is written as \x escapes. - Shader chain: the chain files lose their bilingual comments, so every profile has a new chain version. dmsh_xlate.dll rebuilt from the translated Program.cs (SPIR-V byte-identical on 4,500 shaders of Wonder, TOTK and Age of Calamity), lock and dmsh_chain.h headers regenerated. c1_full.tsv restamped for Dread, 13 Sentinels and Wonder; the other profiles follow when their rebuild finishes. - AGENTS.md and docs/agents: the language rule now covers logs; quoted log lines updated.
15 lines
934 B
C
15 lines
934 B
C
// Unit test (crash.c alternate stack is freed with the thread): start 2000 short-lived threads each calling crash_thread_init, and expect the heap not to grow with the thread count (2 calls per thread, 64 KiB each; before the fix a 250 MiB leak was measured)
|
|
#include <pthread.h>
|
|
#include <stdio.h>
|
|
#include <malloc/malloc.h>
|
|
void crash_thread_init(void);
|
|
static void *body(void *a) { crash_thread_init(); crash_thread_init(); return a; }
|
|
static size_t inuse(void) { malloc_statistics_t st; malloc_zone_statistics(NULL, &st); return st.size_in_use; }
|
|
int main(void) {
|
|
size_t before = inuse();
|
|
for (int i = 0; i < 2000; i++) { pthread_t t; pthread_create(&t, 0, body, 0); pthread_join(t, 0); }
|
|
double grew = (inuse() - (double)before) / 1048576.0;
|
|
printf("heap growth after 2000 short-lived threads %.2f MiB (expected < 1; measured 250 before the fix) %s\n", grew, grew < 1 ? "✓" : "✗");
|
|
return !(grew < 1);
|
|
}
|