Skip to content

windows-msvc-cpu/vulkan red on every PR based on c7cb59fbb: C4244 double->float in ltx2_video.cpp's StreamState<->Ltx2LatentState positions copy (#964) #968

Description

@localai-bot

Defect

windows-msvc-cpu and windows-msvc-vulkan fail with a warning-as-error in
MSVC's own STL headers, triggered from src/vllm/multimodal/ltx2_video.cpp:

include\vector(1461,29): error C2220: the following warning is treated as an error
include\vector(1461,29): warning C4244: '=': conversion from 'const double' to 'float', possible loss of data
include\xutility(4813,18): warning C4244: '=': conversion from 'const double' to 'float', possible loss of data
include\xutility(462,64): warning C4244: 'initializing': conversion from 'const double' to '_Ty' [_Ty=float]
include\xutility(463,69): warning C4244: 'initializing': conversion from 'const double' to '_Objty' [_Objty=float]

The triggering call sites are the two narrowing assigns introduced by
#964 (c7cb59fbb,
LTX25-TOKEN-APPEND):

  • ltx2_video.cpp:203out.positions.assign(s.positions.begin(), s.positions.end());
  • ltx2_video.cpp:214s->positions.assign(in.positions.begin(), in.positions.end());

StreamState::positions and Ltx2LatentState::positions differ in element
type, so each assign narrows double to float implicitly. GCC and Clang
accept it silently; MSVC diagnoses it and the build treats it as an error.

Why this needs the LTX-2.5 lane rather than a drive-by cast

#964's own comment at ltx2_video.cpp:129-132 reasons explicitly about the
round trip — "them as double only because the DiT's positions field takes
one … So double -> float -> double reproduces the bits" — so the narrowing is
deliberate, and silencing it with a static_cast is a claim about that
reasoning rather than a formatting fix. It should be made by whoever owns that
round trip.

Evidence it is inherited from main, not from any one lane

Matched-arm check across open pull requests, by grepping each
windows-msvc-cpu job log for C4244 … const double … float:

PR based on C4244 hits
#966 (MiniMax-Music3 parity; touches zero LTX2 files) c7cb59fbb 2
#951 (MUSIC3 demo/records) c7cb59fbb 2
#967, #956, #950, #939, #938 pre-c7cb59fbb 0

The split is exactly on whether the branch has merged c7cb59fbb. Every PR
that rebases onto current main from here will inherit it.

Note on attribution

This surfaced only after #965
removed the C4456 'loaded' shadow that had been failing the same two jobs
first. Two independent causes were stacked behind one habitually-red job name;
the first one masked the second, and neither was #645. windows-msvc-* being
PR-only (#584) means main
never shows either.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions