File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 22/.gitattributes export-ignore
33/.github export-ignore
44* .ppm binary
5+ /ChangeLog.md conflict-marker-size =8
Original file line number Diff line number Diff line change @@ -10,7 +10,7 @@ if(CMAKE_EXECUTABLE_SUFFIX)
1010endif ()
1111
1212project (libjpeg-turbo C )
13- set (VERSION 2.1.5)
13+ set (VERSION 2.1.5.1 )
1414set (COPYRIGHT_YEAR "1991-2023" )
1515string (REPLACE "." ";" VERSION_TRIPLET ${VERSION} )
1616list (GET VERSION_TRIPLET 0 VERSION_MAJOR)
Original file line number Diff line number Diff line change 1+ 2.1.5.1
2+ =======
3+
4+ ### Significant changes relative to 2.1.5:
5+
6+ 1 . The SIMD dispatchers in libjpeg-turbo 2.1.4 and prior stored the list of
7+ supported SIMD instruction sets in a global variable, which caused an innocuous
8+ race condition whereby the variable could have been initialized multiple times
9+ if ` jpeg_start_*compress() ` was called simultaneously in multiple threads.
10+ libjpeg-turbo 2.1.5 included an undocumented attempt to fix this race condition
11+ by making the SIMD support variable thread-local. However, that caused another
12+ issue whereby, if ` jpeg_start_*compress() ` was called in one thread and
13+ ` jpeg_read_*() ` or ` jpeg_write_*() ` was called in a second thread, the SIMD
14+ support variable was never initialized in the second thread. On x86 systems,
15+ this led the second thread to incorrectly assume that AVX2 instructions were
16+ always available, and when it attempted to use those instructions on older x86
17+ CPUs that do not support them, an illegal instruction error occurred. The SIMD
18+ dispatchers now ensure that the SIMD support variable is initialized before
19+ dispatching based on its value.
20+
21+
1222.1.5
223=====
324
You can’t perform that action at this time.
0 commit comments