任务单 #47970

tmesh segv in tme_fb_xlat4

开放日期: 2023-05-01 00:32 最后更新: 2023-05-06 11:18

报告人:
属主:
(无)
类型:
状态:
开启
组件:
(无)
里程碑:
(无)
优先:
5 - Medium
严重性:
5 - Medium
处理结果:
文件:

Details

$ git config --get remote.origin.url 
https://aur.archlinux.org/tme.git
$ git log --name-status HEAD^..HEAD
commit 5b58821b7c9371e47e7c6f5c65ce5e84c38280d6 (HEAD -> master, origin/master, origin/HEAD)
Author: Ruben Agin <phabrics@phabrics.com>
Date:   Sun Apr 30 04:06:18 2023 -0500

    Add an external declaration to _tme_scanline_pad in display.c to force non-inlined definition inside of it, per gcc documentation. This should fix NME ticket #47963 hopefully.
$ git diff
diff --git a/PKGBUILD b/PKGBUILD
index a5b9f07..868393c 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -9,7 +9,7 @@ url="http://phabrics.com"
 depends=('libvncserver' 'gtk4' 'sdl2')
 source=("https://osdn.net/dl/nme/${pkgname}-${pkgver}.tar.xz")
 sha256sums=('e2c90f7c63de196c7bf52c9b06f17e2ab9db86fa86d8c3ff3ee2360fb20914f8')
-options=('libtool')
+options=(libtool debug !strip)
 install=$pkgname.install
 
 prepare()
@@ -22,7 +22,7 @@ build()
 {
   cd "$pkgname-$pkgver"
   if test "x${CARCH}" = xx86_64; then
-      ./configure --prefix=/usr --disable-ltdl-install --disable-recode
+      ./configure --prefix=/usr --disable-ltdl-install --disable-recode CFLAGS=-g3
   else
       ./configure --prefix=/usr --disable-ltdl-install
   fi
$ gdb /usr/bin/tmesh 
GNU gdb (GDB) 13.1
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/tmesh...
(gdb) run MY-SUN3
Starting program: /usr/bin/tmesh MY-SUN3

This GDB supports auto-downloading debuginfo from the following URLs:
  <https://debuginfod.archlinux.org>
Enable debuginfod for this session? (y or [n])
[New Thread 0x7efe4e1ff6c0 (LWP 144548)]
[Thread 0x7efe4e1ff6c0 (LWP 144548) exited]
[New Thread 0x7efe4e1ff6c0 (LWP 144549)]



Thread 1 "tmesh" received signal SIGSEGV, Segmentation fault.
0x00007efe532c6d40 in tme_fb_xlat4 (src=0x55698fbfec70, dst=0x55698fc3c900) at /home/ambie/src/aur-tme/tme/src/tme-0.12rc10/generic/fb-xlat-auto.c:16650
warning: Source file is more recent than executable.
16650	      TME_FB_XLAT_SHIFT_DST(dst_fifo0_may_be_unaligned,
(gdb) l
16645	        /* we are now on the first pixel of the next scanline: */
16646	        dst_x = 0;
16647	      }
16648	
16649	      /* shift the destination primary FIFO: */
16650	      TME_FB_XLAT_SHIFT_DST(dst_fifo0_may_be_unaligned,
16651	                            dst_fifo0,
16652	                            dst_fifo0_next,
16653	                            dst_fifo0_bits,
16654	                            32,
(gdb) where
#0  0x00007efe532c6d40 in tme_fb_xlat4 (src=0x55698fbfec70, dst=0x55698fc3c900) at /home/ambie/src/aur-tme/tme/src/tme-0.12rc10/generic/fb-xlat-auto.c:16650
#1  0x00007efe528186d9 in _tme_screen_update (screen=0x55698fd74070) at display.c:73
#2  0x00007efe52818925 in tme_display_update (disp=0x55698fc3fe40) at display.c:229
#3  0x00007efe52818a50 in tme_display_th_update (disp=0x55698fc3fe40) at display.c:265
#4  0x00007efe5373747a in tme_sjlj_dispatch (passes=1) at threads-sjlj.c:385
#5  0x00007efe5373775f in tme_sjlj_threads_main_iter (unused=0x0) at threads-sjlj.c:482
#6  0x00007efe53732ba4 in tme_threads_run () at threads.c:118
#7  0x000055698ee6f446 in main (argc=2, argv=0x7ffd5b31fae8) at tmesh.c:904

The MY-SUN3 configuration file is in this repo: https://github.com/ambiamber/Run-Sun3-SunOS-4.1.1 It was renamed from MY-SUN3 to just SUN3 there. I'm not using wayland.

$ echo $XDG_SESSION_TYPE 
x11

任务单历史 (3/16 Histories)

2023-05-01 00:32 Updated by: ambie
  • New Ticket "tmesh segv in tme_fb_xlat4" created
2023-05-01 01:13 Updated by: ambie
评论

I'm not sure why this happens:

warning: Source file is more recent than executable.

$ git config -l
core.editor=emacs
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.url=https://aur.archlinux.org/tme.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
makepkg -si
$ sudo find src -type f -newer pkg/tme/usr/bin/tmesh| grep 'c$'
src/tme-0.12rc10/generic/fb-xlat-auto.c
src/tme-0.12rc10/libtme/recode-host.c
src/tme-0.12rc10/host/display/display.c

But the same segfault happens if I build the tme-0.12rc10.tar.xz sources completely outside of PKGBUILD. The segfault has been happening for a while now. I was afraid it was due to my conversion of as_echo but the PKGBUILD does not use that and the segfault happens in both cases.

2023-05-01 08:57 Updated by: phabrics
评论

That usually indicates that the build process was done after the last installation. The first 2 files (fl-xlat-auto.c, recode-host.c) are (re)generated during the build process. Since the build from AUR is done in-place, the src files get overwritten. In a regular vpath build, they would be in the build directory. The display.c file is written to via the last PKGBUILD of course. If you do a clean build/install it should (hopefully) go away.

Since you are using X, you can try installing the Perl X11::Protocol module before building tme. I have just added it as a build dependency to the AUR PKGBUILD, so it should install it automatically after you update your repo and rebuild the package clean. You should probably uninstall the current installation first and do everything clean again just to make sure. The configure will detect the Perl module and regenerate the fb-xlat-auto.c using the fb-xlat-auto.pl script in the generic subdir. It relies on that Perl module, so it won't run if it isn't found, instead relying on a default config. This should detect your current X settings and generate custom framebuffer translations for your screen. Let me know if this makes a difference.

2023-05-01 10:51 Updated by: ambie
评论

Reply To phabrics

Since you are using X, you can try installing the Perl X11::Protocol module before building tme. I have just added it as a build dependency to the AUR PKGBUILD, so it should install it automatically after you update your repo and rebuild the package clean. You should probably uninstall the current installation first and do everything clean again just to make sure. The configure will detect the Perl module and regenerate the fb-xlat-auto.c using the fb-xlat-auto.pl script in the generic subdir. It relies on that Perl module, so it won't run if it isn't found, instead relying on a default config. This should detect your current X settings and generate custom framebuffer translations for your screen. Let me know if this makes a difference.

$ yay -R tme
$ sudo rm -r pkg/ src tme-0.12rc10-1-x86_64.pkg.tar.zst
makepkg -si
...
checking for perl4.036... no
checking for perl4... no
checking for perl... /usr/bin/perl
...
checking for perl module X11::Protocol version 0.56... ok
...
/usr/bin/perl fb-xlat-auto.pl src 1152x900d1b1s0p32om 1152x900d8b8s0p32ommi8 1152x900d1b1s0p32omccmi8 dst d32b32s0p32olml_r0xffff0000_g0xff00ff00_b0xff0000ff d24b32s0p32olml_r0xff0000_g0xff00_b0xff > fb-xlat-auto.in || \
echo "src 1152x900d1b1s0p32om 1152x900d8b8s0p32ommi8 1152x900d1b1s0p32omccmi8 dst d32b32s0p32olml_r0xffff0000_g0xff00ff00_b0xff0000ff d24b32s0p32olml_r0xff0000_g0xff00_b0xff" > fb-xlat-auto.in
cat fb-xlat-auto.in | xargs /bin/sh fb-xlat-auto.sh > fb-xlat-auto.c
Thread 1 "tmesh" received signal SIGSEGV, Segmentation fault.
0x00007f54c2315ce3 in tme_fb_xlat1 (src=0x56261e6ca5b0, dst=0x56261e6d2b30) at /home/ambie/src/aur-tme/tme/src/tme-0.12rc10/generic/fb-xlat-auto.c:6741
warning: Source file is more recent than executable.
6741	      TME_FB_XLAT_SHIFT_DST(dst_fifo0_may_be_unaligned,

The src and dst addresses changed since the last gdb output.

2023-05-02 09:00 Updated by: phabrics
评论

I tried out your config at https://github.com/ambiamber/Run-Sun3-SunOS-4.1.1 using my copy of tme. I am still not seeing the segfault that you are seeing. I can only assume that this is an environmental issue of some sort. May I ask what config your machine is running? In particular, the processor & screen specs. Maybe there is something there that is causing the condition that I haven't been able to reproduce in testing. If you don't mind, can you send me the config.log from your most recent build?

2023-05-02 10:01 Updated by: phabrics
评论

I'm also wondering if there might be a conflict with tme-0.8. If you have it installed on the same machine, then there is definitely the possibility for there to be some weird interaction between them. I seem to recall having this issue a long, long time ago when I was first trying to port. I don't remember how I resolved it, but having a clean machine (no previous tme installs) is probably the best way to test. There could also be an artifact with some of the libtool libs that are already existing.

2023-05-03 16:48 Updated by: ambie
评论

Reply To phabrics

I tried out your config at https://github.com/ambiamber/Run-Sun3-SunOS-4.1.1 using my copy of tme. I am still not seeing the segfault that you are seeing. I can only assume that this is an environmental issue of some sort. May I ask what config your machine is running? In particular, the processor & screen specs. Maybe there is something there that is causing the condition that I haven't been able to reproduce in testing. If you don't mind, can you send me the config.log from your most recent build?

Config from using PKGBUILD to compile tme.

https://gist.github.com/ambiamber/bd42b155102a1c39b7bcb0183b201a87

I turned on debugging when that configure job was run. The issue happens with or without debugging.

$ git diff PKGBUILD
diff --git a/PKGBUILD b/PKGBUILD
index 2ba74dc..3ec4abf 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -10,7 +10,7 @@ makedepends=('perl-x11-protocol')
 depends=('libvncserver' 'gtk4' 'sdl2')
 source=("https://osdn.net/dl/nme/${pkgname}-${pkgver}.tar.xz")
 sha256sums=('e2c90f7c63de196c7bf52c9b06f17e2ab9db86fa86d8c3ff3ee2360fb20914f8')
-options=('libtool')
+options=(libtool debug !strip)
 install=$pkgname.install
 
 prepare()
@@ -23,7 +23,7 @@ build()
 {
   cd "$pkgname-$pkgver"
   if test "x${CARCH}" = xx86_64; then
-      ./configure --prefix=/usr --disable-ltdl-install --disable-recode
+      ./configure --prefix=/usr --disable-ltdl-install --disable-recode CFLAGS=-g3
   else
       ./configure --prefix=/usr --disable-ltdl-install
   fi

2023-05-03 18:50 Updated by: phabrics
评论

Reply To ambie

Reply To phabrics

I tried out your config at https://github.com/ambiamber/Run-Sun3-SunOS-4.1.1 using my copy of tme. I am still not seeing the segfault that you are seeing. I can only assume that this is an environmental issue of some sort. May I ask what config your machine is running? In particular, the processor & screen specs. Maybe there is something there that is causing the condition that I haven't been able to reproduce in testing. If you don't mind, can you send me the config.log from your most recent build?

Config from using PKGBUILD to compile tme. https://gist.github.com/ambiamber/bd42b155102a1c39b7bcb0183b201a87 I turned on debugging when that configure job was run. The issue happens with or without debugging.

Thank you so much for doing this, Ambie. I hope we are getting closer to figuring this out. I replicated your build exactly and I still got it to work for me. No difference in the compiler flags. The architecture is the same. My kernel is one revision lower (6.2.12 vs. 6.2.13). The only differences are in the relative paths we use and the PATH environment. This would seem to indicate that maybe the environment variables are making the difference? I should point out that tme-0.12 no longer requires anything to be set, unless the paths are not the installation ones. So, there is no need to set LTDL_LIBRARY_PATH or LD_LIBRARY_PATH. I don't know if you are setting those.

Here is my config for the exact same PKGBUILD to compile tme

https://gist.github.com/phabrics/3bdf6dd0f668bda31a72827917dfe4f3

Here is my local "env" run showing the environment variables under which I was able to run "tmesh SUN3" using your project:

SHELL=/bin/bash SESSION_MANAGER=local/springfield:@/tmp/.ICE-unix/455,unix/springfield:/tmp/.ICE-unix/455 WINDOWID=46137347 COLORTERM=truecolor XDG_CONFIG_DIRS=/etc/xdg XDG_MENU_PREFIX=xfce- TERMCAP= SSH_AUTH_SOCK=/tmp/ssh-XXXXXXIETsef/agent.553 INSIDE_EMACS=28.2,comint DESKTOP_SESSION=xfce SSH_AGENT_PID=554 GTK_MODULES=canberra-gtk-module XDG_SEAT=seat0 PWD=/home/phabrics/github/phabrics/Run-Sun3-SunOS-4.1.1 LOGNAME=phabrics XDG_SESSION_TYPE=tty PANEL_GDK_CORE_DEVICE_EVENTS=0 SYSTEMD_EXEC_PID=307 WINDOWPATH=1 MOTD_SHOWN=pam HOME=/home/phabrics LANG=en_US.UTF-8 XDG_CURRENT_DESKTOP=XFCE COLUMNS=238 VTE_VERSION=7201 INVOCATION_ID=04a4428087244a55b54b25aa7cb8ac49 XDG_SESSION_CLASS=user TERM=dumb USER=phabrics DISPLAY=:0.0 SHLVL=2 XDG_VTNR=1 XDG_SESSION_ID=1 XDG_RUNTIME_DIR=/run/user/1000 DEBUGINFOD_URLS=https://debuginfod.archlinux.org XDG_DATA_DIRS=/usr/local/share:/usr/share PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus MAIL=/var/spool/mail/phabrics OLDPWD=/home/phabrics _=/usr/bin/env

2023-05-04 06:24 Updated by: phabrics
评论

I think the next step would be for me to try testing your build. If you can send the package you built (.zst file), I can install it on my machine and see if I get the error. If so, I might be able to debug it. Much appreciated.

2023-05-04 15:16 Updated by: phabrics
评论

I have uploaded my built package to the Downloads section of this project. It is under Downloads->aur->0.12rc10->tme-0.12rc10-1-x84_64-1.tar.xz. This is the debug version as noted, and the PKGBUILD used to build it is in the same folder for reference.

If you wish to give this a try, you can download it now and install it with "pacman -U" or similar. Hope this helps!

2023-05-05 00:10 Updated by: ambie
评论

I see you are using xfce while I am using gnome. I went and created an Arch Linux VM with xfce and lightdm.

I started with a prefabricated Arch Linux qemu qcow2 image from https://geo.mirror.pkgbuild.com/images/ to save me a huge amount of time compared to installing Arch from scratch. It still took time to put Xorg and xfce and lightdm on. The result is that I have a "clean" build environment, clean in that it does not have a lot of packages installed so that missing dependencies will show up.

[arch@tme ~]$ yay -S tme
AUR Explicit (1): tme-0.12rc10-1
Sync Dependency (3): libvncserver-0.9.14-2, gtk4-1:4.10.3-1, sdl2-2.26.5-1
:: (1/1) Downloaded PKGBUILD: tme
  1 tme                                      (Build Files Exist)
==> Packages to cleanBuild?
==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)
==> 
  1 tme                                      (Build Files Exist)
==> Diffs to show?
==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)
==> 
==> Making package: tme 0.12rc10-1 (Thu May  4 14:32:31 2023)
==> Retrieving sources...
  -> Downloading tme-0.12rc10.tar.xz...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100     2    0     2    0     0      5      0 --:--:-- --:--:-- --:--:--     5
100     2    0     2    0     0      0      0 --:--:--  0:00:03 --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:03 --:--:--     0
100 1671k  100 1671k    0     0   260k      0  0:00:06  0:00:06 --:--:--  698k
==> Validating source files with sha256sums...
    tme-0.12rc10.tar.xz ... Passed
:: (1/1) Parsing SRCINFO: tme
resolving dependencies...
looking for conflicting packages...

Packages (17) graphene-1.10.8-1  gssdp-1.6.2-1  gst-plugins-bad-libs-1.22.2-1
              gst-plugins-base-libs-1.22.2-1  gstreamer-1.22.2-1
              gupnp-1:1.6.3-1  gupnp-igd-1.6.0-1  hidapi-0.13.1-2
              libnice-0.1.21-2  libva-2.18.0-1  libxkbcommon-x11-1.5.0-1
              libxv-1.0.12-1  orc-0.4.33-1  wayland-protocols-1.31-1
              gtk4-1:4.10.3-1  libvncserver-0.9.14-2  sdl2-2.26.5-1

Total Download Size:   14.76 MiB
Total Installed Size:  76.98 MiB

:: Proceed with installation? [Y/n] 
:: Retrieving packages...
 gtk4-1:4.10.3-1-...     6.0 MiB  2.61 MiB/s 00:02 [######################] 100%
 gst-plugins-bad-...     2.4 MiB  6.12 MiB/s 00:00 [######################] 100%
 gst-plugins-base...     2.2 MiB  7.38 MiB/s 00:00 [######################] 100%
 gstreamer-1.22.2...  1824.5 KiB  7.13 MiB/s 00:00 [######################] 100%
 sdl2-2.26.5-1-x86_64  987.6 KiB  5.67 MiB/s 00:00 [######################] 100%
 libnice-0.1.21-2...   313.9 KiB  3.69 MiB/s 00:00 [######################] 100%
 orc-0.4.33-1-x86_64   249.0 KiB  3.86 MiB/s 00:00 [######################] 100%
 libvncserver-0.9...   231.1 KiB  3.76 MiB/s 00:00 [######################] 100%
 graphene-1.10.8-...   196.3 KiB  3.04 MiB/s 00:00 [######################] 100%
 libva-2.18.0-1-x...   183.3 KiB  3.14 MiB/s 00:00 [######################] 100%
 gupnp-1:1.6.3-1-...   123.9 KiB  1333 KiB/s 00:00 [######################] 100%
 wayland-protocol...    76.5 KiB   879 KiB/s 00:00 [######################] 100%
 gssdp-1.6.2-1-x86_64   59.4 KiB   782 KiB/s 00:00 [######################] 100%
 hidapi-0.13.1-2-...    40.6 KiB   865 KiB/s 00:00 [######################] 100%
 libxv-1.0.12-1-x...    35.5 KiB   826 KiB/s 00:00 [######################] 100%
 gupnp-igd-1.6.0-...    28.8 KiB   480 KiB/s 00:00 [######################] 100%
 libxkbcommon-x11...    22.5 KiB   401 KiB/s 00:00 [######################] 100%
 Total (17/17)          14.8 MiB  3.01 MiB/s 00:05 [######################] 100%
(17/17) checking keys in keyring                   [######################] 100%
(17/17) checking package integrity                 [######################] 100%
(17/17) loading package files                      [######################] 100%
(17/17) checking for file conflicts                [######################] 100%
(17/17) checking available disk space              [######################] 100%
:: Running pre-transaction hooks...
(1/1) etckeeper: pre-transaction commit
[master 6162f78] saving uncommitted changes in /etc prior to pacman run
 Author: arch <arch@tme>
 1 file changed, 1 insertion(+), 1 deletion(-)
:: Processing package changes...
( 1/17) installing graphene                        [######################] 100%
( 2/17) installing gstreamer                       [######################] 100%
Optional dependencies for gstreamer
    python: gst-plugins-doc-cache-generator
( 3/17) installing orc                             [######################] 100%
( 4/17) installing libxv                           [######################] 100%
( 5/17) installing gst-plugins-base-libs           [######################] 100%
( 6/17) installing libxkbcommon-x11                [######################] 100%
( 7/17) installing libva                           [######################] 100%
Optional dependencies for libva
    intel-media-driver: backend for Intel GPUs (>= Broadwell)
    libva-intel-driver: backend for Intel GPUs (<= Haswell)
    libva-mesa-driver: backend for AMD and Nvidia GPUs
( 8/17) installing gssdp                           [######################] 100%
Optional dependencies for gssdp
    gtk4: gssdp-device-sniffer [pending]
( 9/17) installing gupnp                           [######################] 100%
Optional dependencies for gupnp
    python: gupnp-binding-tool
(10/17) installing gupnp-igd                       [######################] 100%
(11/17) installing libnice                         [######################] 100%
Optional dependencies for libnice
    gstreamer: "nice" GStreamer plugin [installed]
(12/17) installing wayland-protocols               [######################] 100%
(13/17) installing gst-plugins-bad-libs            [######################] 100%
(14/17) installing gtk4                            [######################] 100%
Optional dependencies for gtk4
    evince: Default print preview command
(15/17) installing hidapi                          [######################] 100%
(16/17) installing sdl2                            [######################] 100%
Optional dependencies for sdl2
    alsa-lib: ALSA audio driver [installed]
    libpulse: PulseAudio audio driver [installed]
    jack: JACK audio driver
    pipewire: PipeWire audio driver
    libdecor: Wayland client decorations
(17/17) installing libvncserver                    [######################] 100%
:: Running post-transaction hooks...
(1/4) Arming ConditionNeedsUpdate...
(2/4) Compiling GSettings XML schema files...
(3/4) Updating GTK4 module cache...
(4/4) etckeeper: post-transaction commit
[master c68a795] committing changes in /etc made by "sudo pacman -S --config /etc/pacman.conf -- extra/gtk4 extra/sdl2 extra/libvncserver"
 Author: arch <arch@tme>
 2 files changed, 2 insertions(+)
 create mode 100644 libva.conf
==> Making package: tme 0.12rc10-1 (Thu May  4 14:32:47 2023)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Missing dependencies:
  -> perl-x11-protocol
==> ERROR: Could not resolve all dependencies.
 -> error making: tme-exit status 8
 -> Failed to install the following packages. Manual intervention is required:
tme - exit status 8
[arch@tme ~]$ 

You should update you PKGBUILD to include perl-x11-protocol as a dependency.

One more thing, if you put triple open braces (left braces) on a line by itself, the next lines will be formatted as a code block. You also need triple close braces on a line by itself to close the code block.

I added the missing package and tme built and installed. Now the emulator window opens but I get this:

[arch@tme Run-Sun3-SunOS-4.1.1]$ tmesh SUN3 
Thu May  4 14:58:51 2023 library versions: 
tmesh> source SUN3
libEGL warning: DRI2: failed to authenticate
tmesh> 

2023-05-05 01:10 Updated by: ambie
评论

When I got this it was because the qemu guest running tmesh did not have 3D OpenGL enabled at the qemu level.

[arch@tme Run-Sun3-SunOS-4.1.1]$ tmesh SUN3 
Thu May  4 14:58:51 2023 library versions: 
tmesh> source SUN3
libEGL warning: DRI2: failed to authenticate
tmesh> 
I enabled 3D. I'm using virt-manger but I can dump the configuration as xml if you need to see it.

Now tmesh doesn't crash but the TME window is only about 839 pixels wide by 253 pixels hight.

2023-05-05 08:11 Updated by: phabrics
评论

Reply To ambie

When I got this it was because the qemu guest running tmesh did not have 3D OpenGL enabled at the qemu level. {{{ Run-Sun3-SunOS-4.1.1$ tmesh SUN3 Thu May 4 14:58:51 2023 library versions: tmesh> source SUN3 libEGL warning: DRI2: failed to authenticate tmesh> }}} I enabled 3D. I'm using virt-manger but I can dump the configuration as xml if you need to see it. Now tmesh doesn't crash but the TME window is only about 839 pixels wide by 253 pixels hight.

I'm glad you were able to get it up and running to a certain extent. I don't know why the TME window is scaled. It should always be a fixed size (some multiple of the 1152x900 native size). Are you able to see anything on the screen? Is the input working? I may need to adjust some stuff there.

It shouldn't depend on the window manager you are using. I think you can use anything there. In fact, I think it should compile fine even in a console environment without graphics. In that case, it obviously won't be able to detect X screen settings with perl-x11-protocol falling back to the defaults. So the result might be suboptimal for a given X11 graphics environment, but it should work fine. That's how it can be distributed as a binary package with default settings for anyone in any graphics environment. In fact, all X dependencies have been removed from TME itself, so that it only depends on the graphics package being used to take care of all those details (gtk, sdl, vnc).

I thought I had added perl-x11-protocol as a build dependency. It's actually an optional dependency, so maybe I should just have it as an option. I think you have to specify to makepkg that uninstalled build dependencies should be installed (-s option). Not sure how yay handles that. I will give it a try and let you know if I need the configuration. Thank you and sorry for the inconvenience. Obviously the goal is to have it working right out of the box. I have only been testing myself and haven't had input from anyone else in a long while.

2023-05-05 09:41 Updated by: ambie
评论

I really appreciate you and I'm glad to help.

This is an image of the tmesh window running inside the Arch Linux KVM QEMU libvirt VM https://drive.google.com/file/d/1eCqQgwJCgkmP8j3POFwZhX6rHBNGLiy1/view

In the PKGBUILD for tme:

makedepends=('perl-x11-protocol')
But yay doesn't display perl-x11-protocol as a Sync Dependency:
AUR Explicit (1): tme-0.12rc10-1
Sync Dependency (3): libvncserver-0.9.14-2, gtk4-1:4.10.3-1, sdl2-2.26.5-1

In the ocrmypdf PKGBUILD python-wheel is only in makedepends.

# NOTICE: The number of dependencies we rely on is *very high*. If the program does not run after an upgrade, make sure all your dep
s are upgraded, especially AUR deps!
depends=('python' 'img2pdf' 'python-pillow>=7.0.0' 'tesseract' 'ghostscript' 'unpaper' 'pngquant' 'python-pikepdf' 'python-reportlab
' 'python-pdfminer' 'python-tqdm' 'python-pluggy' 'python-coloredlogs' 'python-importlib_resources' 'python-packaging')

makedepends=('python-setuptools-scm>=7.0.5' 'python-build' 'python-installer' 'python-wheel')
optdepends=('jbig2enc: Better compression algorithm; results in smaller PDF files')
Focusing on python-wheel, that package is not installed yet.
[arch@tme ~]$ yay -Qii python-wheel
error: package 'python-wheel' was not found
The python-wheel package shows up on the "Sync Make Dependency" line:
[arch@tme ~]$ yay -S ocrmypdf
AUR Explicit (1): ocrmypdf-14.1.0-1
AUR Dependency (1): python-coloredlogs-15.0.1-3
Sync Dependency (15): unpaper-7.0.0-2, tesseract-5.3.1-1, python-pdfminer-20221105-2, python-pluggy-1.0.0-4, python-tqdm-4.65.0-3, python-packaging-23.0-3, img2pdf-0.4.4-5, python-importlib_resources-5.12.0-2, python-pikepdf-7.2.0-2, pngquant-3.0.1-3, ghostscript-10.01.1-1, python-reportlab-3.6.12-3, python-pillow-9.5.0-2, python-humanfriendly-10.0-5, python-3.11.3-1
Sync Make Dependency (6): python-build-0.10.0-3, python-installer-0.7.0-3, python-wheel-0.40.0-3, python-setuptools-scm-7.1.0-3, python-setuptools-1:67.7.0-1, python-sphinx-7.0.0-1
:: (1/2) Downloaded PKGBUILD: python-coloredlogs
:: (2/2) Downloaded PKGBUILD: ocrmypdf
  2 ocrmypdf                                 (Build Files Exist)
  1 python-coloredlogs                       (Build Files Exist)
==> Packages to cleanBuild?
==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)
The one thing I notice (and it might not be relevant) is that the ocrmypdf PKGBUILD puts depends= before makedepends=

You're running tmesh over ssh aren't you?

XDG_SESSION_TYPE=tty
When I tried to do that by using SSH into the VM it fails
$ ssh -CY arch@tme
... skip ahead...
[arch@tme Run-Sun3-SunOS-4.1.1]$ $ env | grep -E 'DISP|tty'
XDG_SESSION_TYPE=tty
DISPLAY=localhost:10.0

[arch@tme Run-Sun3-SunOS-4.1.1]$ tmesh SUN3 
Thu May  4 12:43:39 2023 library versions: 
tmesh> source SUN3
libEGL warning: DRI3: failed to query the version
libEGL warning: DRI2: failed to authenticate
tmesh> ^C
$ ssh -X arch@tme
... skip ahead ...
[arch@tme Run-Sun3-SunOS-4.1.1]$ tmesh SUN3 
Thu May  4 12:47:49 2023 library versions: 
tmesh> source SUN3

(process:887): Gdk-ERROR **: 12:47:49.328: XInput2 support not found on display
Trace/breakpoint trap (core dumped)
This is how I uninstall tme via yay:
[arch@tme ~]$ yay -R tme
checking dependencies...

Packages (1) tme-0.12rc10-1

Total Removed Size:  2.89 MiB

:: Do you want to remove these packages? [Y/n] 
:: Running pre-transaction hooks...
(1/1) Removing old entries from the info directory file...
:: Processing package changes...
(1/1) removing tme                                 [######################] 100%
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...
[arch@tme ~]$ yay -Scc

Cache directory: /var/cache/pacman/pkg/
:: Do you want to remove ALL files from cache? [y/N] y
removing all files from cache...

Database directory: /var/lib/pacman/
:: Do you want to remove unused repositories? [Y/n] 
removing unused sync repositories...

Build directory: /home/arch/.cache/yay
:: Do you want to remove ALL AUR packages from cache? [Y/n] 
removing AUR packages from cache...
[arch@tme ~]$ 

2023-05-05 13:29 Updated by: phabrics
评论

OK, so after a little more investigation, it appears that there is an issue with gtk4 that I hadn't seen before. It looks like we will have to fall back to gtk3 for it to work. It is easy enough to do this by simply changing the corresponding dependency in PKGBUILD appropriately. This build will make the window display the full screen with gtk, rather than just the partial window you're seeing now. You can also use sdl or vnc which do display properly with the current build. It's as simple as changing the "gtk" to "sdl" or "vnc" at the machine description location and starting tmesh the same way.

display0: tme/host/sdl/display 

I am still debugging an issue with the keyboard input handling in the graphical displays, which seems to be in Sun2/3 configs only right now. But you should be able to display the Sun screen using one of the methods above if you wish. You can also use the serial port interface on the console, but that's probably not what you want. In the meantime, I will see if I can fix what's going on with the graphical display key input. I am not using ssh, but it's an interesting testcase. I guess gtk4 doesn't support the X forwarding, or else the X via ssh doesn't support all of its requirements. Not really sure about that one. I have just been running a normal terminal, sometimes inside of emacs (which I think that was).

As for the dependency issue, I think I might just put everything in depends (or optdepends/makedepends if it allows). That would hopefully bypass the issue.

(Edited, 2023-05-05 14:01 Updated by: phabrics)
2023-05-06 11:18 Updated by: ambie
评论

Reply To phabrics

OK, so after a little more investigation, it appears that there is an issue with gtk4 that I hadn't seen before. It looks like we will have to fall back to gtk3 for it to work. It is easy enough to do this by simply changing the corresponding dependency in PKGBUILD appropriately.

I'm not really sure how changing to gtk3 in the PKGBUILD will work if there is already gtk4 installed for other software to use. I think configure.ac would need to be modified to not look for gtk4.

On my physical computer running tme with gtk4 I set the display to gtk. The screen works but the keyboard does not respond except to the Enter key and even that has a delay of several seconds. I also tried VNC with Remmina and the keyboard was the same. Here is a screenshot of Ninth Edition UNIX running:

https://drive.google.com/file/d/1eWTDewn0agp4jBMI6PMSkwvrzItyCikS/view

I'm working on a repo to install v9. That is my target. It requires SunOS to install it.

On my xfce VM I removed gtk4 because xfce does not require it. (I really rolled back to a qcow2 snapshot I took before installing tme). I changed the PKGBUILD to use gtk3

diff --git a/PKGBUILD b/PKGBUILD
index 1c3fe86..d92a5c4 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -8,9 +8,9 @@ license=('GPL3')
 url="http://phabrics.com"
 optdepends=('perl-x11-protocol: for computing optimal graphics parameters'
            'libvncserver: graphics hosted via VNC server'
-           'gtk4: graphics hosted via GTK4'
+           'gtk3: graphics hosted via GTK3'
            'sdl2: graphics hosted via SDL2')
-makedepends=('perl-x11-protocol' 'libvncserver' 'gtk4' 'sdl2')
+makedepends=('perl-x11-protocol' 'libvncserver' 'gtk3' 'sdl2')
 source=("https://osdn.net/dl/nme/${pkgname}-${pkgver}.tar.xz")
 sha256sums=('e2c90f7c63de196c7bf52c9b06f17e2ab9db86fa86d8c3ff3ee2360fb20914f8')
 options=(libtool debug !strip)
Then I used makepkg -si and the result works; the screen and keyboard are good. So gtk4 appears to have been an issue like you said.

(Edited, 2023-05-06 11:21 Updated by: ambie)

Attachment File List

No attachments

编辑

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » 登录名