Skip to content

Segfault when using XML module on MacOS 15.4 #15619

Closed
@Blacksmoke16

Description

@Blacksmoke16

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions