PHP version
Tested on 8.6 (most likely all versions, because this is in the extension)
PHP SQLSRV or PDO_SQLSRV version
5.13.1
Microsoft ODBC Driver version
none
SQL Server version
none
Client operating system
Linux
Table schema
none
Problem description
ASAN ODR Violation when sqlsrv and pdo_sqlsrv extensions are loaded:
==243628==ERROR: AddressSanitizer: odr-violation (0xfffa38b5ffe0):
[1] size=24 'g_sqlsrv_stream_wrapper' /tmp/sqlsrv-5.13.1/shared/core_stream.cpp:312:20 in /usr/lib/php/20250926/sqlsrv.so
[2] size=24 'g_sqlsrv_stream_wrapper' /tmp/pdo_sqlsrv-5.13.1/shared/core_stream.cpp:312:20 in /usr/lib/php/20250926/pdo_sqlsrv.so
These globals were registered at these points:
[1]:
#0 0xfffa4bb92420 in __asan_register_globals ../../../../src/libsanitizer/asan/asan_globals.cpp:350
#1 0xfffa4c26bb10 (/lib/ld-linux-aarch64.so.1+0x4b10) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
#2 0xfffa4c26bc20 (/lib/ld-linux-aarch64.so.1+0x4c20) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
#3 0xfffa4c2683ac in _dl_catch_exception (/lib/ld-linux-aarch64.so.1+0x13ac) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
#4 0xfffa4c271d18 (/lib/ld-linux-aarch64.so.1+0xad18) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
#5 0xfffa4c268338 in _dl_catch_exception (/lib/ld-linux-aarch64.so.1+0x1338) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
#6 0xfffa4c272118 (/lib/ld-linux-aarch64.so.1+0xb118) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
#7 0xfffa4aa01570 (/lib/aarch64-linux-gnu/libc.so.6+0x81570) (BuildId: d5ef86dde36cbd3289566cf5098226035d76f2e1)
#8 0xfffa4c268338 in _dl_catch_exception (/lib/ld-linux-aarch64.so.1+0x1338) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
#9 0xfffa4c268458 (/lib/ld-linux-aarch64.so.1+0x1458) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
#10 0xfffa4aa00ff0 (/lib/aarch64-linux-gnu/libc.so.6+0x80ff0) (BuildId: d5ef86dde36cbd3289566cf5098226035d76f2e1)
#11 0xfffa4aa0164c in dlopen (/lib/aarch64-linux-gnu/libc.so.6+0x8164c) (BuildId: d5ef86dde36cbd3289566cf5098226035d76f2e1)
#12 0xfffa4bbb9320 in dlopen ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:6341
#13 0xab135b8caed8 in php_load_shlib /tmp/php-build/source/8.6/ext/standard/dl.c:86
#14 0xab135b8cb094 in php_load_extension /tmp/php-build/source/8.6/ext/standard/dl.c:150
#15 0xab135c776800 in zend_llist_apply /tmp/php-build/source/8.6/Zend/zend_llist.c:182
#16 0xab135bc4407c in php_ini_register_extensions /tmp/php-build/source/8.6/main/php_ini.c:743
#17 0xab135bc25208 in php_module_startup /tmp/php-build/source/8.6/main/main.c:2357
#18 0xab135aa498f8 in main /tmp/php-build/source/8.6/sapi/cli/php_cli.c:1337
#19 0xfffa4a9a84c0 (/lib/aarch64-linux-gnu/libc.so.6+0x284c0) (BuildId: d5ef86dde36cbd3289566cf5098226035d76f2e1)
#20 0xfffa4a9a8594 in __libc_start_main (/lib/aarch64-linux-gnu/libc.so.6+0x28594) (BuildId: d5ef86dde36cbd3289566cf5098226035d76f2e1)
#21 0xab135aa49f6c in _start (/usr/bin/php8.6+0x3649f6c) (BuildId: 6b4968badf03bc648c3e5ace4137468cb6600697)
[2]:
#0 0xfffa4bb92420 in __asan_register_globals ../../../../src/libsanitizer/asan/asan_globals.cpp:350
#1 0xfffa4c26bb10 (/lib/ld-linux-aarch64.so.1+0x4b10) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
#2 0xfffa4c26bc20 (/lib/ld-linux-aarch64.so.1+0x4c20) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
#3 0xfffa4c2683ac in _dl_catch_exception (/lib/ld-linux-aarch64.so.1+0x13ac) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
#4 0xfffa4c271d18 (/lib/ld-linux-aarch64.so.1+0xad18) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
#5 0xfffa4c268338 in _dl_catch_exception (/lib/ld-linux-aarch64.so.1+0x1338) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
#6 0xfffa4c272118 (/lib/ld-linux-aarch64.so.1+0xb118) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
#7 0xfffa4aa01570 (/lib/aarch64-linux-gnu/libc.so.6+0x81570) (BuildId: d5ef86dde36cbd3289566cf5098226035d76f2e1)
#8 0xfffa4c268338 in _dl_catch_exception (/lib/ld-linux-aarch64.so.1+0x1338) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
#9 0xfffa4c268458 (/lib/ld-linux-aarch64.so.1+0x1458) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
#10 0xfffa4aa00ff0 (/lib/aarch64-linux-gnu/libc.so.6+0x80ff0) (BuildId: d5ef86dde36cbd3289566cf5098226035d76f2e1)
#11 0xfffa4aa0164c in dlopen (/lib/aarch64-linux-gnu/libc.so.6+0x8164c) (BuildId: d5ef86dde36cbd3289566cf5098226035d76f2e1)
#12 0xfffa4bbb9320 in dlopen ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:6341
#13 0xab135b8caed8 in php_load_shlib /tmp/php-build/source/8.6/ext/standard/dl.c:86
#14 0xab135b8cb094 in php_load_extension /tmp/php-build/source/8.6/ext/standard/dl.c:150
#15 0xab135c776800 in zend_llist_apply /tmp/php-build/source/8.6/Zend/zend_llist.c:182
#16 0xab135bc4407c in php_ini_register_extensions /tmp/php-build/source/8.6/main/php_ini.c:743
#17 0xab135bc25208 in php_module_startup /tmp/php-build/source/8.6/main/main.c:2357
#18 0xab135aa498f8 in main /tmp/php-build/source/8.6/sapi/cli/php_cli.c:1337
#19 0xfffa4a9a84c0 (/lib/aarch64-linux-gnu/libc.so.6+0x284c0) (BuildId: d5ef86dde36cbd3289566cf5098226035d76f2e1)
#20 0xfffa4a9a8594 in __libc_start_main (/lib/aarch64-linux-gnu/libc.so.6+0x28594) (BuildId: d5ef86dde36cbd3289566cf5098226035d76f2e1)
#21 0xab135aa49f6c in _start (/usr/bin/php8.6+0x3649f6c) (BuildId: 6b4968badf03bc648c3e5ace4137468cb6600697)
==243628==HINT: if you don't care about these errors you may set ASAN_OPTIONS=detect_odr_violation=0
SUMMARY: AddressSanitizer: odr-violation: global 'g_sqlsrv_stream_wrapper' at /tmp/sqlsrv-5.13.1/shared/core_stream.cpp:312:20 in /usr/lib/php/20250926/sqlsrv.so
==243628==ABORTING
Expected behavior and actual behavior
No ODR violation
Repro code or steps to reproduce
ASAN enabled version of PHP with sqlsrv and pdo_sqlsrv extensions loaded:
$ php -v
// ASAN output from above
Context
I am currently working on building ASAN images for the setup-php action for GitHub actions in https://github.com/shivammathur/php-builder/, the smoke test is failing with this ODR violation:
https://github.com/shivammathur/php-builder/actions/runs/26163595733/job/76987312204?pr=20#step:12:17
PHP version
Tested on 8.6 (most likely all versions, because this is in the extension)
PHP SQLSRV or PDO_SQLSRV version
5.13.1
Microsoft ODBC Driver version
none
SQL Server version
none
Client operating system
Linux
Table schema
none
Problem description
ASAN ODR Violation when
sqlsrvandpdo_sqlsrvextensions are loaded:Expected behavior and actual behavior
No ODR violation
Repro code or steps to reproduce
ASAN enabled version of PHP with
sqlsrvandpdo_sqlsrvextensions loaded:Context
I am currently working on building ASAN images for the
setup-phpaction for GitHub actions in https://github.com/shivammathur/php-builder/, the smoke test is failing with this ODR violation:https://github.com/shivammathur/php-builder/actions/runs/26163595733/job/76987312204?pr=20#step:12:17