libsql-client-ts
libsql-client-ts copied to clipboard
Illegal instruction (core dumped)
I basically do this:
import { createClient } from "@libsql/client";
const client = createClient({
url: "file:local.db",
});
await client.batch(
[
"CREATE TABLE IF NOT EXISTS users (email TEXT)"
],
"write",
);
and get Illegal instruction (core dumped)
same on Nodes 18,19 and 20
my envinfo:
System:
OS: Linux 5.4 Ubuntu 20.04.6 LTS (Focal Fossa)
CPU: (2) x64 Intel(R) Core(TM)2 Duo CPU E4500 @ 2.20GHz
Memory: 537.44 MB / 3.83 GB
Container: Yes
Shell: 5.0.17 - /bin/bash
Binaries:
Node: 18.20.4 - ~/.nvm/versions/node/v18.20.4/bin/node
Yarn: 1.22.17 - /usr/local/bin/yarn
npm: 10.7.0 - ~/.nvm/versions/node/v18.20.4/bin/npm
bun: 1.0.26 - ~/.bun/bin/bun
Watchman: 20201115.021953.0 - /usr/local/bin/watchman
Managers:
Apt: 2.0.10 - /usr/bin/apt
Gradle: 8.6 - ~/.sdkman/candidates/gradle/current/bin/gradle
pip2: 20.1.1 - /usr/local/bin/pip2
pip3: 20.0.2 - /usr/bin/pip3
RubyGems: 3.1.2 - /usr/bin/gem
Utilities:
CMake: 3.16.3 - /usr/bin/cmake
Make: 4.2.1 - /usr/bin/make
GCC: 9.4.0 - /usr/bin/gcc
Git: 2.25.1 - /usr/bin/git
Clang: 8.0.1 - /usr/bin/clang
Ninja: 1.10.0 - /usr/bin/ninja
FFmpeg: 4.2.7 - /usr/bin/ffmpeg
Curl: 7.68.0 - /usr/bin/curl
OpenSSL: 1.1.1 - /usr/bin/openssl
Virtualization:
Docker: 24.0.7 - /usr/bin/docker
Docker Compose: 1.25.0 - /usr/bin/docker-compose
SDKs:
Android SDK:
API Levels: 23, 29, 31, 33
Build Tools: 31.0.0
System Images: android-31 | Intel x86_64 Atom, android-31 | Google APIs Intel x86_64 Atom, android-33 | Google APIs Intel x86_64 Atom
IDEs:
Nano: 4.8 - /bin/nano
VSCode: 1.92.1 - /snap/bin/code
Vim: 8.1 - /usr/bin/vim
Languages:
Bash: 5.0.17 - /bin/bash
Java: 11.0.23 - /usr/bin/javac
Perl: 5.30.0 - /usr/bin/perl
PHP: 7.4.3 - /usr/bin/php
Python: 2.7.18 - /usr/bin/python
Python3: 3.8.10 - /usr/bin/python3
Ruby: 2.7.0 - /usr/bin/ruby
Databases:
MongoDB: 3.6.8 - /usr/bin/mongo
MySQL: 0.20.04.3 - /usr/bin/mysql
SQLite: 3.42.0 - /home/u/Android/platform-tools/sqlite3
Browsers:
Chrome: 127.0.6533.99
Just found out that when using in memory db, it doesn't throw error.
Like:
const client = createClient({url: ":memory:"});
So it's a problem with AVX or AVX2 instructions that my cpu doesn't have.
Solution is to use Intel SDE that emulates needed instructions and prebuilt sqld as server.
Download required SDE, server and:
cd libsql-server
~/Downloads/sde-external-9.24.0-2023-07-13-lin/sde64 -snb -- sqld --http-listen-addr 192.168.0.15:4000
Notes:
- Use
-snbflag that's needed forsdeto skip failing cpu check. It was required to run it in my case. - Client url should be for example
TURSO_ULR=http://192.158.0.15:4000instead oflibsql://192..... With libsql protocol, client library assumes SSL is set and tries to query the database with HTTPS://.