Skip to content

memory-lancedb-pro can crash OpenClaw Gateway with Illegal Instruction on older non-AVX2 Intel CPU #172

@mactone

Description

@mactone

Summary

memory-lancedb-pro can crash OpenClaw Gateway with Illegal instruction (core dumped) on an older Intel CPU (Celeron J1800, likely non-AVX2). After fixing config/schema mismatches and validating the config successfully, the plugin still caused repeated gateway crashes in the LanceDB native module.

This does not look like a pure config problem anymore. It appears to be a native binary / CPU instruction compatibility problem in @lancedb/lancedb-linux-x64-gnu on older x86_64 hardware.

At the same time, I observed that stable v1.0.32 with a minimal config appears much more stable than v1.1.0-beta.6 on the same host.


Environment

  • OpenClaw: 2026.3.8
  • OS: Linux x86_64
  • Node: v22.x
  • CPU: Intel Celeron J1800
  • Host type: older x86_64 machine, likely non-AVX2
  • Plugin repo tested locally from source checkout

Plugin versions tested:

  • v1.1.0-beta.6
  • v1.0.32

Dependency state observed:

  • memory-lancedb-pro@1.1.0-beta.6
  • @lancedb/lancedb = ^0.26.2
  • local lockfile / installed version resolved to 0.26.2

Initial config problems (already solved)

Before reaching the actual crash, I also hit config/schema mismatches. These were corrected and are not the final blocker, but I’m including them because they may help improve docs.

Examples that caused schema validation failures:

  • selfImprovement.managementTools

    • current schema does not accept this under selfImprovement
    • the accepted field is top-level enableManagementTools
  • memoryReflection.enabled

    • current schema does not accept this field
    • current behavior is controlled via sessionStrategy

After removing those unsupported fields and using a schema-valid config, the gateway still later crashed with Illegal instruction.

So there are really two separate issues:

  1. README / example config mismatch with current schema
  2. native crash after successful plugin registration on older CPU

What happens on v1.1.0-beta.6

With a schema-valid config, the plugin successfully registers:

  • memory-lancedb-pro@1.1.0-beta.6: plugin registered
  • self-improvement: integrated hooks registered
  • session-strategy: using none

The gateway then continues booting, starts providers, and later crashes with core dump.

Observed systemd / journal signals:

  • Process ... dumped core
  • status=4/ILL
  • Failed with result 'core-dump'
  • repeated restart loop via systemd

The stack trace repeatedly points to:

/home/.../plugins/memory-lancedb-pro/node_modules/@lancedb/lancedb-linux-x64-gnu/lancedb.linux-x64-gnu.node

Example stack snippet:

#0  0x... n/a (.../lancedb.linux-x64-gnu.node + 0x4b83700)
#1  0x... n/a (.../lancedb.linux-x64-gnu.node + 0x4e4c144)

This happened repeatedly after apparently successful registration / startup.


What happens on stable v1.0.32

After checking out v1.0.32 and re-applying a minimal plugin config, I observed a much better result on the same host.

Relevant log lines:

  • memory-lancedb-pro@1.0.32: plugin registered (db: ..., model: jina-embeddings-v5-text-small)
  • memory-lancedb-pro: initialized successfully (embedding: OK, retrieval: OK, mode: hybrid, FTS: enabled)
  • memory-lancedb-pro: backup completed (52 entries -> ...memory-backup-2026-03-12.jsonl)

At least in this test window, stable did not immediately fall into the same crash loop that I saw with beta.

That said, stable v1.0.32 still declares:

  • @lancedb/lancedb ^0.26.2

So I’m not yet certain whether the difference comes from:

  • a safer execution path in stable,
  • different runtime behavior before hitting the problematic native code path,
  • or something subtle in plugin feature flow rather than dependency version alone.

Why I suspect AVX2 / instruction-set compatibility

The crash mode is highly consistent with known older-CPU incompatibility:

  • signal is ILL / illegal instruction
  • the failing module is the LanceDB native binary
  • this machine is an old Intel Celeron J1800

This also appears consistent with similar upstream reports, for example:

  • lance-format/lance#2195
  • lancedb/lancedb#592
  • lancedb/lancedb#865

In particular, issue discussions around older Intel CPUs point toward AVX2-related incompatibility.


Minimal config used for the stable retest

This reduced config was used to minimize variables:

{
  enabled: true,
  config: {
    embedding: {
      provider: 'openai-compatible',
      apiKey: '${JINA_API_KEY}',
      model: 'jina-embeddings-v5-text-small',
      baseURL: 'https://api.jina.ai/v1',
      dimensions: 1024,
      taskQuery: 'retrieval.query',
      taskPassage: 'retrieval.passage',
      normalized: true
    },
    dbPath: '~/.openclaw/memory/lancedb-pro',
    autoCapture: true,
    autoRecall: false,
    retrieval: {
      mode: 'hybrid',
      vectorWeight: 0.7,
      bm25Weight: 0.3,
      minScore: 0.3,
      rerank: 'cross-encoder',
      rerankApiKey: '${JINA_API_KEY}',
      rerankModel: 'jina-reranker-v3',
      rerankProvider: 'jina',
      candidatePoolSize: 20,
      recencyHalfLifeDays: 14,
      recencyWeight: 0.1,
      filterNoise: true,
      lengthNormAnchor: 500,
      hardMinScore: 0.35,
      timeDecayHalfLifeDays: 60,
      reinforcementFactor: 0.5,
      maxHalfLifeMultiplier: 3
    }
  }
}

This config was successfully validated by OpenClaw before restart.


Questions

  1. Is @lancedb/lancedb 0.26.2 known to require AVX2 (or other newer CPU instructions) on Linux x64 builds?
  2. Is there a recommended LanceDB version range for older non-AVX2 Intel CPUs?
  3. Is beta v1.1.0-beta.6 known to exercise a code path that is more likely to trigger this native crash than stable v1.0.32?
  4. Is there a supported way to build / install LanceDB with more conservative CPU flags for older hardware?
  5. Could the README / docs explicitly warn about:
    • schema differences in newer config examples,
    • old Intel / non-AVX2 CPU compatibility,
    • whether stable is safer than beta on older hosts?

Suggested documentation improvements

It would help a lot if the repo documented:

  • supported CPU instruction assumptions for the prebuilt LanceDB native binary
  • whether old x86_64 Intel CPUs (non-AVX2) are expected to work
  • whether source build is required on such hosts
  • which config fields are current / accepted vs obsolete README examples

Practical impact

On this machine, the plugin is not just failing its own features — in beta it can destabilize the entire OpenClaw gateway through repeated core dumps.

That makes CPU compatibility and documentation especially important for users deploying OpenClaw on older low-power x86 boxes.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions