vypivshiy / ani-cli-ru

Просмотр аниме с русской озвучкой в терминале
GNU General Public License v3.0
111 stars 5 forks source link

Crash on Ubuntu 24.04 (SIGILL) #34

Closed rumly111 closed 1 week ago

rumly111 commented 2 weeks ago

Program doesn't run on Ubuntu 24.04 , exits with SIGILL error "Illegal instruction" .

It worked fine on 22.04 .

vypivshiy commented 2 weeks ago

Hi, i dont know how reproduce this crash. I think this is not a problem with the cli client

Try direct play any url video via mpv:

mpv --version
mpv "https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8"

If is no problem with the mpv player, please provide more information:

rumly111 commented 2 weeks ago

Here's the problem, there is almost no useful information. I run python with -d (debug), also set PYTHONDEBUG envvar, still no error message or stack trace, only "terminated with SILILL (illegal instruction)" .

My python version is 3.12.3 , and I tried running interactive shell, then import anicli_api, it imported without errors. But then I try import anicli, and python interpreter crashes without errors, and bash tells me about SIGILL error.

I have a hunch it has something to do with python version 3.12 , but it's the only version of python3 available in Ubuntu 24.04 . Maybe later I'll try to download and compile python3.11 and try.

# pipx runpip anicli-ru list

Package        Version
-------------- --------
anicli_api     0.6.4
anicli-ru      5.0.10
anyio          4.3.0
attrs          23.2.0
certifi        2024.2.2
chompjs        1.2.3
cssselect      1.2.0
eggella        0.1.5
h11            0.14.0
h2             4.1.0
hpack          4.0.0
httpcore       1.0.5
httpx          0.25.2
hyperframe     6.0.1
idna           3.7
jmespath       1.0.1
lxml           5.2.1
packaging      24.0
parsel         1.9.1
pip            24.0
prompt-toolkit 3.0.43
setuptools     69.5.1
sniffio        1.3.1
tqdm           4.66.2
w3lib          2.1.2
wcwidth        0.2.13
rumly111 commented 2 weeks ago

btw have you ever thought about making a version of the program with minimum dependencies? For example get rid of prompt_toolkit etc.

vypivshiy commented 2 weeks ago

you can try install another python version by pyenv and install app like:

pipx install anicli-ru --python python3.11

I think is problem in ubuntu discro (or packages?). This client works on windows 11 and i now test on mint 21.2:

uname -a
Linux georgiy-MS-7C81 5.15.0-102-generic #112-Ubuntu SMP Tue Mar 5 16:50:32 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
$SHELL --version
fish, version 3.3.1

pipx list
venvs are in /home/georgiy/.local/pipx/venvs
apps are exposed on your $PATH at /home/georgiy/.local/bin
   package anicli-ru 5.0.10, installed using Python 3.12.3
    - anicli-ru
georgiy@georgiy-MS-7C81 ~> pipx run anicli-ru
⚠️  anicli-ru is already on your PATH and installed at
    /home/georgiy/.local/bin/anicli-ru. Downloading and running anyway.
Press |CTRL+C| or |CTRL+D| or type exit for close this app
Press |TAB| or type help for get commands information
Loaded source provider: animego.org
>

About decrease dependencies - no, i cant:

I plan to add an optional install primitive web client (to run via Termux/iSh termunal emulators in phones, eg)

In the distant future, I want to rewrite API and client (bubbletea) in golang and make releases in binaries. Like projectdiscovery tools. Minimal developments for rewriting included. Most parsers are described in an experimental DSL language for generating code. This simplified the project architecture.

rumly111 commented 2 weeks ago

I tried using both python 3.11 and 3.10 , but still get the same error. It seems the issue is with the OS, and I don't know how to solve it. Maybe future updates will help.

I often think it would be cool to use anicli_api on a mobile phone , but it's a bit of a hassle. Your idea of simple TUI can be used, but also another way is to run a local web server to interact with the program.

rumly111 commented 1 week ago

Нашёл в чём была проблема. Одна из зависимостей (parsel-1.9.1), или её подзависимостей, крэшили питон. Поставил системный пакет python3-parsel-1.8.1 , и всё заработало.

Хотя столкнулся со странной проблемой, связанной с pipx. В зависимостях anicli_api указана версия parsel >=1.8.1 <2.0.0, и у меня в системе установлена 1.8.1, pipx упорно тянет parsel 1.9.1 из pypi. Пришлось устанавливать программу через обычный pip .

UPD: Проблема с lxml, видимо pipx/pip его как-то не так копмилирует, и программа вылетает.