playcanvas / playcanvas/splat-transform

Bug: SegFault on conversion (k-means webgpu)

Open
#49 10 comments 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
1.3k
Forks
168
Avg merge
7h 51m
Merged PRs (30d)
12

Description

Segfault during k-means webgpu on v0.8.0 Linux

GPU segfault

Summary: Running splat-transform v0.8.0 on a .ply crashes with a segmentation fault right after the k-means step.

The run also floods stdout with millions of Dawn/Node-WebGPU getWgslLanguageFeatures: Unknown WGSLLanguageFeatureName lines. Maybe not causing direct issue, but could be relevant.


Command used
splat-transform <REDACTED_INPUT>.ply --filterNaN -i 2 <REDACTED_OUTPUT_DIR>/meta.json
# (original run redirected to a log file)

Expected behavior

Process completes and writes outputs without crashing.

Actual behavior

Process ends with Segmentation fault (core dumped) immediately after the k-means log line.


Console output (redacted excerpt)
splat-transform v0.8.0
reading '<REDACTED_INPUT>.ply'...
writing '<REDACTED_OUTPUT_DIR>/meta.json'...
writing '<REDACTED_OUTPUT_DIR>/means_l.webp'...
writing '<REDACTED_OUTPUT_DIR>/means_u.webp'...
writing '<REDACTED_OUTPUT_DIR>/quats.webp'...
/home/runner/work/node-webgpu/node-webgpu/third_party/dawn/src/dawn/node/binding/GPU.cpp:337 getWgslLanguageFeatures: Unknown WGSLLanguageFeatureName WGSLLanguageFeatureName::0xbd06e060
/home/runner/work/node-webgpu/node-webgpu/third_party/dawn/src/dawn/node/binding/GPU.cpp:0x151 getWgslLanguageFeatures: Unknown WGSLLanguageFeatureName WGSLLanguageFeatureName::0x574d
/home/runner/work/node-webgpu/node-webgpu/third_party/dawn/src/dawn/node/binding/GPU.cpp:0x151 getWgslLanguageFeatures: Unknown WGSLLanguageFeatureName WGSLLanguageFeatureName::0xb7396080
/home/runner/work/node-webgpu/node-webgpu/third_party/dawn/src/dawn/node/binding/GPU.cpp:0x151 getWgslLanguageFeatures: Unknown WGSLLanguageFeatureName WGSLLanguageFeatureName::0x574d
/home/runner/work/node-webgpu/node-webgpu/third_party/dawn/src/dawn/node/binding/GPU.cpp:0x151 getWgslLanguageFeatures: Unknown WGSLLanguageFeatureName WGSLLanguageFeatureName::0xbf8bef3a
/home/runner/work/node-webgpu/node-webgpu/third_party/dawn/src/dawn/node/binding/GPU.cpp:0x151 getWgslLanguageFeatures: Unknown WGSLLanguageFeatureName WGSLLanguageFeatureName::0xbf8bf80a
/home/runner/work/node-webgpu/node-webgpu/third_party/dawn/src/dawn/node/binding/GPU.cpp:0x151 getWgslLanguageFeatures: Unknown WGSLLanguageFeatureName WGSLLanguageFeatureName::0xbf8c0683

/... (≈98,555,568 similar lines omitted) ...

/home/runner/work/node-webgpu/node-webgpu/third_party/dawn/src/dawn/node/binding/GPU.cpp:0x151 getWgslLanguageFeatures: Unknown WGSLLanguageFeatureName WGSLLanguageFeatureName::0xb1e1d35d
/home/runner/work/node-webgpu/node-webgpu/third_party/dawn/src/dawn/node/binding/GPU.cpp:0x151 getWgslLanguageFeatures: Unknown WGSLLanguageFeatureName WGSLLanguageFeatureName::0xb1e9720e
/home/runner/work/node-webgpu/node-webgpu/third_party/dawn/src/dawn/node/binding/GPU.cpp:0x151 getWgslLanguageFeatures: Unknown WGSLLanguageFeatureName WGSLLanguageFeatureName::0x33110f6c

WEBGPU features: float32-filterable, float32-blendable, texture-compression-bc, timestamp-query, depth-clip-control, depth32float-stencil8, indirect-first-instance, bgra8unorm-storage, rg11b10ufloat-renderable, clip-distances
Warning: DawnTexelCopyBufferRowAlignmentLimits is not supported in required limits
Warning: hostMappedPointerLimits is not supported in required limits
Powered by PlayCanvas 2.11.2 853d4aa
Running k-means clustering: dims=1 points=599745 clusters=256 iterations=2...
Segmentation fault (core dumped)

Environment
  • splat-transform: v0.8.0
  • OS: Linux | Ubuntu 25.04
  • GPU/Driver: RTX 3090 | nvidia driver 575.64.03
  • Node version: v24.7.0
  • Vulkan Instance Version: 1.4.304
  • PlayCanvas (reported by splat-transform): 2.11.2 (853d4aa)

CPU only run works (Albeit it takes forever)

I also tried a CPU only run with the command:

splat-transform --no-gpu -w /input_path/input.ply --filterNaN -i 2 /output_path/meta.json

It works but takes forever (44mins on a ~45MB input ply with ryzen 7900X). The step that takes the most time is the k-mean clustering on centroid:

Running k-means clustering: dims=45 points=199915 clusters=65536 iterations=2...

So it seems to be a gpu bug only...

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the reported splat-transform command on Linux with the WebGPU path and compare it with the working --no-gpu run. Investigate the k-means step identified by the final log line, alongside the repeated Dawn/Node-WebGPU warnings. Done means the GPU run completes without a segmentation fault and writes its expected outputs.

Written by the indexing model from the issue text.

Assessment

Tech stack
nodejs, typescript
Domain
cli, computer-graphics
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.