<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/123189>123189</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [MASM] SIGSEGV in `checkForValidSection` in MasmParser
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          MisterDA
      </td>
    </tr>
</table>

<pre>
    I'm trying to cross-compile the OCaml compiler with a Debian host, targeting `x86_64-pc-windows` with `clang-cl`. I'm running into a segfault from `llvm-ml` (the MASM assembler), a drop-in replacement for Microsoft's `ml64`. I hit the issue with LLVM 18 and LLVM 20 (ea14bdb0356cdda727ac032470f6a0a2102d1281 as the time of writing). Here is a reproducer, as a Dockerfile (build with `docker build --platform linux/amd64 .`), and the backtrace:

```Dockerfile
# syntax=docker/dockerfile:1
FROM debian:experimental
ARG LLVM_VERSION=20

ENV DEBUGINFOD_URLS="https://debuginfod.debian.net"
RUN cat <<'EOF' > /etc/apt/sources.list.d/debug.list
deb http://deb.debian.org/debian-debug/ experimental-debug main
EOF

RUN rm -f /etc/apt/apt.conf.d/docker-clean; echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
 --mount=type=cache,target=/var/lib/apt,sharing=locked \
    apt update && DEBIAN_FRONTEND=noninteractive apt upgrade -y && \
 DEBIAN_FRONTEND=noninteractive apt-get --no-install-recommends install -y \
    clang-$LLVM_VERSION clang-$LLVM_VERSION-dbgsym \
 clang-tools-$LLVM_VERSION clang-tools-$LLVM_VERSION-dbgsym \
 lld-$LLVM_VERSION lld-$LLVM_VERSION-dbgsym \
    llvm-$LLVM_VERSION llvm-$LLVM_VERSION-dbgsym \
    lldb-$LLVM_VERSION lldb-$LLVM_VERSION-dbgsym \
    make gdb
ADD --keep-git-dir --link https://github.com/ocaml/ocaml.git /root/ocaml
WORKDIR /root/ocaml

ENV LLVM_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer-$LLVM_VERSION

RUN clang-cl-20 -nologo -EP -TC runtime/caml/domain_state.tbl > runtime/domain_state.inc

# llvm-ml-20 -m64 dislikes parentheses on macro calls
RUN sed -e 's/(//g' -e 's/)//g' -i runtime/domain_state.inc

# llvm-ml-20 doesn't understand NEAR
RUN sed -E -e 's/(EXTRN.*):.*NEAR/\1:PROC/g' -i runtime/amd64nt.asm

RUN llvm-ml-20 -m64 -nologo -Iruntime -c -Foruntime/amd64nt.obj runtime/amd64nt.asm
```

```
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: llvm-ml-20 -m64 -nologo -Iruntime -c -Foruntime/amd64nt.obj runtime/amd64nt.asm
 #0 0x00007ffff7fa117a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) build-llvm/tools/clang/stage2-bins/llvm/lib/Support/Unix/Signals.inc:723:13
 #1 0x00007ffff7f9ed14 llvm::sys::RunSignalHandlers() build-llvm/tools/clang/stage2-bins/llvm/lib/Support/Signals.cpp:106:18
 #2 0x00007ffff7fa182b SignalHandler build-llvm/tools/clang/stage2-bins/llvm/lib/Support/Unix/Signals.inc:413:1
 #3 0x00007ffff6ac0da0 (/lib/x86_64-linux-gnu/libc.so.6+0x3fda0)
 #4 0x00007ffff98923a2 checkForValidSection build-llvm/tools/clang/stage2-bins/llvm/lib/MC/MCParser/MasmParser.cpp:1457:31
 #5 0x00007ffff9895133 parseStatement build-llvm/tools/clang/stage2-bins/llvm/lib/MC/MCParser/MasmParser.cpp:0:7
 #6 0x00007ffff988d2a5 Run build-llvm/tools/clang/stage2-bins/llvm/lib/MC/MCParser/MasmParser.cpp:0:0
 #7 0x000055555555d0f0 AssembleInput build-llvm/tools/clang/stage2-bins/llvm/tools/llvm-ml/llvm-ml.cpp:186:13
 #8 0x000055555555bc9a llvm_ml_main build-llvm/tools/clang/stage2-bins/llvm/tools/llvm-ml/llvm-ml.cpp:0:11
 #9 0x000055555555e45a main build-llvm/tools/clang/stage2-bins/build-llvm/tools/clang/stage2-bins/tools/llvm-ml/llvm-ml-driver.cpp:17:10
#10 0x00007ffff6aaad68 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#11 0x00007ffff6aaae25 call_init ./csu/../csu/libc-start.c:128:20
#12 0x00007ffff6aaae25 __libc_start_main ./csu/../csu/libc-start.c:347:5
#13 0x0000555555559d71 (/usr/lib/llvm-20/bin/llvm-ml+0x5d71)
Segmentation fault
```

https://github.com/llvm/llvm-project/blob/628976c8345e235d4f71a0715f1990ad8b5bbcf7/llvm/lib/MC/MCParser/MasmParser.cpp#L1456-L1463

Presumably `getStreamer()` returns a `nullptr`.

It's possibly similar to #97635, I'll ping the participants: @sivan-shani @MaskRay.
Thanks for any help!
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy0WFtz4yoS_jXkpUsqhCzJfsiDEttzUie3sjOzlxcXEkjmBIEK0CTeX78FkieJk9ndTO2kPB4M6u6Pj74Jaq1oFefnKLtA2fKMDm6vzfmNsI6bZXlWaXY4v0Kk6MCZg1AtOA210dZGte56ITm4PYe7S9pJmGYMPAm3BwpLXgmqYK-tQ-QSHDUtd14HyvHzPN_ls6ivoyehmH6yKMejHMpxLalqo1qiHMcwWjeDUl5UKKeBguVtQwfpoDG68yJSfu-izksAInOP6abc3gC1lneV5AaRhcdAgRndR0KB4b2kNe-4ctBoAzfCb0s3DpHCeo2dzGcjANgLF7YprB34iPL6-tsNJHOgio1jEgxzmswqVuE0y2vGaEEKWuOUzArc5BRTkmDCEjJPgNqg0YmOg27gyQjPDCKLGP7gxpsC6jEazYbaw7_0IhSWun7kpvHEIzKvBiHZD9pYWINxMop6SV2jTQdSqOEZkTXtWD6DGOX4yIZiAUVF60dnaM1RWiIcPjkePy_2_CxJwR6Uo88oXY7WEFmzl0fSMkG4XG_uboCFw0dpyZ97boTnmUqEy3LzJRC2-7babK_ublG6JHg0urr9BsvVxdcvV7fru-Xu6-Z6i9IlImTvXG89NrL29ng1tEI1msWjkVhxhwhBuNx8vYWaOkDppf-QYnW3RqQAlK4AkTV3taehd4isrR5MzW0shXUxO6oNPxEuGa_AW31t9GhNm3acEFRFQQqRNbze5jgLHRXKb-tuPe7PozMdRM0pFtq7uNaqGXEEOqNack_fBfB6rwGR4kIoag4eUFp6sTAo7x_GwZ-c99FSPympKeMsuqf1I225BUSIMwP3_KQXP-Hijf1Hr6mm9Z5PkKOo04NyKF26Q89RuhwXyeUY0OGI1t-pd4VpZVR7affUeKdOl9LviQHKLhEuP6NQiuq_qgMA2jsYekadj4ockdz70VV5u1tv7m4fVrdLlC6VVkI5bmjtxHc-ibSGMg7R4Sg2qfxfpKOWO4gipSOhrKNSRobXuuu4YhamqaD5B8oxrSEye-3_H89GrGrtoTsKj884raX9ifyHaydapGTvpD-YO5ECgJBc30u-n_xIlFUfGX03-V60o48cWlb5pLFcQhQFz2yFi5gwEEVSqEd4mxpa4fZDFde6Q2Sta9rJ4_9xK5x3e6O1-7GGy7_dbf5cXm0-WJnyUYC4_cfNxd311T9Xm919-fDH6KCD9Q5aCeXd1HNhD12lpfgXN6d7ewn_Y2WLCIZIaalbDdHqHqKHS1_ifDkIYRSAM-0zyM466njsKhlC9-WpN8tC1VPmJilMxTAY6fIZMGGleOQWemq4cntuuQWtoKO10VBTKe2Ez3IGkQ-iwgZG5xOvPnG8nl-8nhefBcU0twqRwsGgGDfW-UJ0uyo3r1Gs3gJZ_f1hcxsjUnrjaelHQYKsUXaZoLS839xdfggplD3lYmq7l4M4pejHYVxNghDVEK31ezW6-uvnyo9l86SKIlzeX6_K7QrsUHXCAQVfIAzvtXG-pfoPbuyRHl2sN_ovXns3Da2IpyYUcaFqObCxF6sNtfuXkh4jXG4drR-BDV0_FngcQ_i7N7o1tANq2sFXLo_gNzEDiKQY8DPGGBdN0zRFQ5OkoMHcWMLswY6DeyOUC5gfQlNC5i8PGfq009YZTruQsi99R4jIYux6oomskA19IPlw88Xe0ZaTqBLKvmI01Jbt0PtDQGT9VQnfJW1Fq6i0wXnTsiCp72rSaQvJ2y0sOEtmH21hM6hRzx9UMcmNDaH0_0B5hFf3_jATnPvv-QSPnDI8JxW8AfK7eJol6dT9eRzpaxw5rTGjoT3-oW1q_0NnGrVqGBfq2Oo4R-QCP6cNo6FNHRXOXitczBckpQTqPa8f19p8o1KwLa-d0OqX93dzGb7uqbGhq72htht_HKmeZQVKy_S4x-wEUpakqU-wlm998gsvFr8NDPauOQHJ3wKZM0Iz2Ay_kQoc_o3Wi8l6Nv0x3GAop9euK9UPv8LC8aHjW92P0fEs5vnrqJyfYKjqxZhYdp3c-Xr0GyB4DpKjLyxOAPBZRuGzhj_x6E_BRcyI7y8uW4QUMRbgBL8NSkpZPofdzsedr9fG7XwnMPIVe9PWh2Xsh_ZgGe-9RdU7OQXrqVC890458zEyWUxOLXKShXZjJ5Rwp0bGodccBc2xzysJmaO0JMc9kI80vtnDR_A_1JzOPDvZpDg9OcEFK5IpY42N3hgagWaC3zZ-_gAu8HPGimTMWFvehhfBkJDCPcX73uDTFb-S2iPIyXxR5PU8nWWcpBmbNUVCcZFkTbJYYMrmVVZVdVN8MqhJep3Msjy6TmZ5OiK8N9wOHa3kAVCOW-62oex6aV_LUI7BcDcYZYH6J9QgZe8MynE8Krga71J6ba3wWqzohKTG9zs-Zoo8zXwBv0KkkBL6cLu05z6HOlGLnk4NCZphK75TFdk9VcL_vKH2cUMP3szDnqpHG25wqDrAnssekeSMnadskS7oGT9PirTAZI7T_Gx_Tmb1okgzkmcLWtCswqzOsmZWzJsqSzAuzsQ5wSTDSZInyaxI8rgiacXzPMWsIWSxwGiGeUeFjD27sTbtWWjFzhOSJvPFmaQVlzZcpxGi-NN4Z-TfvrPlmTkPZ1oNrUUzLIV19kWNE06Ge7ibcnuDsiVsr75sV1--gVDhTuyDYuePQCh4OcqzwcjzX-8lpz18Pyf_DgAA___b0ztf">