Closed
Description
Bug Report
An oq
user reported a crash when using the xml
format.
require "xml"
pp XML.parse(%(<name id="1">Fred</name>))
Results in:
Invalid memory access (signal 11) at address 0x20
[0x100e38034] *Exception::CallStack::print_backtrace:Nil +112 in /Users/george/.cache/crystal/crystal-run-test.tmp
[0x100e1cb50] ~procProc(Int32, Pointer(LibC::SiginfoT), Pointer(Void), Nil)@/Users/george/bsmoke/crystal/src/crystal/system/unix/signal.cr:173 +276 in /Users/george/.cache/crystal/crystal-run-test.tmp
[0x189e0f624] _sigtramp +56 in /usr/lib/system/libsystem_platform.dylib
[0x100e4cffc] *GC::free<Pointer(Void)>:Nil +44 in /Users/george/.cache/crystal/crystal-run-test.tmp (2 times)
[0x100e1d448] ~procProc(Pointer(Void), Nil)@/Users/george/bsmoke/crystal/src/xml/libxml2.cr:330 +12 in /Users/george/.cache/crystal/crystal-run-test.tmp
[0x1933b094c] xmlBufFree +92 in /usr/lib/libxml2.2.dylib
[0x1933b08bc] xmlFreeParserInputBuffer +80 in /usr/lib/libxml2.2.dylib
[0x1933b0da4] xmlFreeInputStream +128 in /usr/lib/libxml2.2.dylib
[0x1933b0b10] xmlFreeParserCtxt +44 in /usr/lib/libxml2.2.dylib
[0x1933bc234] xmlDoRead +152 in /usr/lib/libxml2.2.dylib
[0x100ec8d38] *XML::parse<String>:XML::Node +180 in /Users/george/.cache/crystal/crystal-run-test.tmp
[0x100e100dc] __crystal_main +1184 in /Users/george/.cache/crystal/crystal-run-test.tmp
[0x100e83ecc] *Crystal::main_user_code<Int32, Pointer(Pointer(UInt8))>:Nil +12 in /Users/george/.cache/crystal/crystal-run-test.tmp
[0x100e83e18] *Crystal::main<Int32, Pointer(Pointer(UInt8))>:Int32 +64 in /Users/george/.cache/crystal/crystal-run-test.tmp
[0x100e196b0] main +32 in /Users/george/.cache/crystal/crystal-run-test.tmp
Tested with locally built compiler on MacOS 15.4:
$ ccrystal --version
Using compiled compiler at /Users/george/bsmoke/crystal/.build/crystal
Crystal 1.16.0-dev [28479a405] (2025-03-31)
The compiler was not built in release mode.
LLVM: 19.1.7
Default target: aarch64-apple-darwin24.4.0
$ xmllint --version
xmllint: using libxml version 20913
Installing and pointing the linker at the libxml2
homebrew package does work:
$ PKG_CONFIG_PATH="/opt/homebrew/opt/libxml2/lib/pkgconfig" ccrystal test.cr
Using compiled compiler at /Users/george/bsmoke/crystal/.build/crystal
#<XML::Document:0x101362c00 children=[#<XML::Element:0x10136af00 name="name" attributes=[#<XML::Attribute:0x10134ce70 name="id" content="1">] children=[#<XML::Text:0x10136ae00 "Fred">]>]>
So seems like something to do with Mac's bundled system version.