dk / Prima

prima.eu.org
Other
106 stars 27 forks source link

semistatic and uninitialized memory #71

Closed jddurand closed 1 year ago

jddurand commented 1 year ago

Analysing thai usage, I stumpled around uninitialized reads that appear to be a transversal thing. A typical report as per Dr Memory is:

Error #2: UNINITIALIZED READ: reading register ax
# 0 thai.dll!th_brk_wc_find_breaks        [C:\Users\jddfr\git\perlbuildwindows-build\thai-prefix\src\thai\src\thwbrk\thwbrk.c:60]
# 1 Prima.dll!text_get_libthai_breaks     [C:\Users\jddfr\git\perlbuildwindows-build\.cpan\build\Prima-1.67-0\class\Drawable\wrap.c:383]
# 2 Prima.dll!text_init_wrap_rec          [C:\Users\jddfr\git\perlbuildwindows-build\.cpan\build\Prima-1.67-0\class\Drawable\wrap.c:433]
# 3 Prima.dll!string_glyphs_wrap          [C:\Users\jddfr\git\perlbuildwindows-build\.cpan\build\Prima-1.67-0\class\Drawable\wrap.c:1218]
# 4 Prima.dll!Drawable_text_wrap          [C:\Users\jddfr\git\perlbuildwindows-build\.cpan\build\Prima-1.67-0\class\Drawable\wrap.c:1283]
Note: @0:00:20.469 in thread 596
Note: instruction: data16 test   %ax %ax

Error #3: UNINITIALIZED READ: reading register ax
# 0 thai.dll!th_uni2tis_line              [C:\Users\jddfr\git\perlbuildwindows-build\thai-prefix\src\thai\src\thwchar\thwchar.c:207]
# 1 thai.dll!th_brk_wc_find_breaks        [C:\Users\jddfr\git\perlbuildwindows-build\thai-prefix\src\thai\src\thwbrk\thwbrk.c:64]
# 2 Prima.dll!text_get_libthai_breaks     [C:\Users\jddfr\git\perlbuildwindows-build\.cpan\build\Prima-1.67-0\class\Drawable\wrap.c:383]
# 3 Prima.dll!text_init_wrap_rec          [C:\Users\jddfr\git\perlbuildwindows-build\.cpan\build\Prima-1.67-0\class\Drawable\wrap.c:433]
# 4 Prima.dll!string_glyphs_wrap          [C:\Users\jddfr\git\perlbuildwindows-build\.cpan\build\Prima-1.67-0\class\Drawable\wrap.c:1218]
# 5 Prima.dll!Drawable_text_wrap          [C:\Users\jddfr\git\perlbuildwindows-build\.cpan\build\Prima-1.67-0\class\Drawable\wrap.c:1283]
Note: @0:00:20.472 in thread 596
Note: instruction: data16 test   %ax %ax

though it has nothing to do with libthai itself, it has to do with how the internal stack is managed in semistatic.c.

dk commented 1 year ago

fixed, thank you!