LINUX.ORG.RU

Билд sdl2 `-m32` падает при запуске (ubuntu 18.04 amd64)

 , ,


0

1

https://forum.littlevgl.com/t/different-pool-memory-consumption-in-sim-and-bare-metal/1489/14

Я активно использую sdl2 чтобы писать прошивки на PC, без реального железа. Все работает, но хотелось бы использовать 32-битный билд чтобы монитор памяти показывал значения более близкие к реальному железу (stm32). Это из-за того, что много структур с указателями, и если они разного размера, то набегает разница в полтора раза. Проблема в том, что все собирается, но при запуске падает с ошибкой

dbus[30505]: arguments to dbus_message_new_method_call() were incorrect, assertion "path != NULL" failed in file ../../../dbus/dbus-message.c line 1362.
This is normally a bug in some application using the D-Bus library.

  D-Bus not built with -rdynamic so unable to print a backtrace

По ссылке - инструкция как воспроизвести в vscode (при открытии проекта все зависимости поставятся автоматически).

Нашел баг в лаунчпаде и костыли https://bugs.launchpad.net/ubuntu/+source/libsdl2/+bug/1775067/comments/7. Это можно как-то получше зафиксить?

★★★★★

Похоже на баг в самом SDL2.

Лучше пересобрать SDL2 без поддержки DBus и вообще кучи всего остального, что тебе явно не нужно для эмулятора. Зачем? Не знаю, вдруг пригодится.

Без дибаса кстати хуже не станет, потому что он нужен только для IME всяких сложных языков и управления питанием.

a1batross ★★★★★
()

Чёт странно, тыкну попозжа если бессонница не отстанет

LINUX-ORG-RU ★★★★★
()

У меня ничего не падает https://i.ibb.co/QCB3Xdt/2020-03-12-02-15-08.png и ошибок нет. Кроме не имеющих отношения к делу

.dron@gnu:~/Загрузки/dispenser/.pio/build/emulator$ file ./program 
./program: ELF 32-bit LSB shared object, Intel 80386, version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux.so.2, BuildID[sha1]=8d8fd445e170601657e1be5b860f553bd68a9fb6, for GNU/Linux 3.2.0, not stripped
dron@gnu:~/Загрузки/dispenser/.pio/build/emulator$ ./program 
ERROR: ld.so: object 'libgtk3-nocsd.so.0' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object 'libgtk3-nocsd.so.0' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object 'libgtk3-nocsd.so.0' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ATTENTION: default value of option vblank_mode overridden by environment.

dron@gnu:~$ apt show libsdl2-dev:i386
Package: libsdl2-dev:i386
Version: 2.0.10+dfsg1-2
Priority: optional
Section: libdevel
Source: libsdl2
Maintainer: Debian SDL packages maintainers <pkg-sdl-maintainers@lists.alioth.debian.org>
Installed-Size: 4 161 kB
Depends: libasound2-dev, libdbus-1-dev, libegl1-mesa-dev, libgl1-mesa-dev, libgles2-mesa-dev, libglu1-mesa-dev, libibus-1.0-dev, libpulse-dev, libsdl2-2.0-0 (= 2.0.10+dfsg1-2), libsndio-dev, libudev-dev, libwayland-dev, libx11-dev, libxcursor-dev, libxext-dev, libxi-dev, libxinerama-dev, libxkbcommon-dev, libxrandr-dev, libxss-dev, libxt-dev, libxv-dev, libxxf86vm-dev, pkg-config
Conflicts: libsdl-1.3-dev
Replaces: libsdl-1.3-dev
Homepage: https://www.libsdl.org/
Tag: devel::library, role::devel-lib
Download-Size: 765 kB
APT-Manual-Installed: yes
APT-Sources: http://ftp.ru.debian.org/debian testing/main i386 Packages
Description: Simple DirectMedia Layer development files
 SDL is a library that allows programs portable low level access to a video
 framebuffer, audio output, mouse, and keyboard.
 .
 This package contains the files needed to compile and link programs which
 use SDL.

dron@gnu:~$ 

Можно конечно собрать SDL из ванильных исходников и проверить, но

dron@gnu:/tmp$ apt source libsdl2-dev:i386
...
dron@gnu:/tmp$ cd libsdl2-2.0.10+dfsg1/
dron@gnu:/tmp/libsdl2-2.0.10+dfsg1$ grep "bus" ./debian/patches/*
dron@gnu:/tmp/libsdl2-2.0.10+dfsg1$ 

Есть ли смысл? Иииили виноваты патчи от убунты? Проверь

Так как с лёту не воспроизводится значит должны как то звёзды сойтись, но как? Что-то тут не чисто.

dbus_message_new_method_call() Нигде не дёргается. Или я слепой

P.S. Окошко большое для наглядности :D

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 4)
Ответ на: комментарий от LINUX-ORG-RU

Чтобы не писать каждый раз DBUS_FATAL_WARNINGS при запуске, можно наверняка в самое начало софтины вставить.

setenv("DBUS_FATAL_WARNINGS","0",1);
LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от a1batross

У меня Debian :D Но суть то не меняет, я глянул из 18.04 /core/linux/SDL_Dbus* и у себя скачал исходники дистра глянул, никакой разницы не вижу.

Хотя я тут спать собрался может глядел плохо, я удалил уже всё. Завтра ещё раз гляну может не доглядел чего.

Если там в убунте собрали как-то криво, или там есть патч который внезапно не указан что он есть или ещё чего я не знаю. Тут не попишешь ничего. Обходить проблему, или конпелять себе свой SDL.

Но в любом случае DBUS орёт про конкретный вызов, в SDL этого вызова явного вообще нет. Лично я чёт не понял

Я завтра попробую с LD_PRELOAD убунтовскими запустить иль в виртуалку накачу

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 3)
Ответ на: комментарий от LINUX-ORG-RU

У меня Debian :D Но суть то не меняет

Меняет, на минте не падает. Это чо-та в убунте LTS накосорезили, каазлины.

Vit ★★★★★
() автор топика
Ответ на: комментарий от LINUX-ORG-RU

Сенькс. Годный костыль. Я пока залил другой вариант https://github.com/puzrin/dispenser/commit/34ba5d17c22092d2b9faace0dc9ab16087693182. Все равно жутко ломало сначала билд запускать, а потом ручками из командной строки бинарник. Сделал таск, который делает все сразу из IDE, и заодно окружение патчит. Но если кому-то припрет из командной строки запускать, заюзаю твой вариант.

Из плохих новостей - в макоси похоже поддержку 32-битных программ совсем выпилят, придется -m32 на ходу крутить.

Vit ★★★★★
() автор топика
Ответ на: комментарий от Vit

Из плохих новостей - в макоси похоже поддержку 32-битных программ совсем выпилят, придется -m32 на ходу крутить.

Эта, да. Сейчас вообще везде выпиливают. А 32бита для SDL2 как мать родная.

PlatformIO LittlevGL

Вижу к слову первый раз. Прикольно.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Вижу к слову первый раз. Прикольно.

PIO неплох. Я очень тщательно выбирал, что можно дать последователям, чтобы они без напрягов прошивки заливали. Удобно, что когда папку в vscode открываешь, все автоматически ставится.

LittlevGL после того как нормальные шрифты туда запилил, и субпиксельное сглаживание привернули, вообще красавчик.

Vit ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.