You are not logged in.
Pages: 1
I found a minor GUI bug in the pluma text editor that comes with the MATE Desktop. I downloaded the source code, compiled it, and came up with a fix that requires a small amount of refactoring in one source file.
According to the web page "How to report a bug in Devuan", since pluma is presumably not forked by Devuan, I should file this bug + proposed fix with the Debian bug tracking system.
But if I want this fix to be added to the original pluma source code, should I file the bug and proposed fix with the MATE Desktop team instead? Or will Debian pass on the fix to the MATE Desktop team?
Since this is my first time reporting a proposed fix to an open source project, I'm also curious about what happens afterwards. If the MATE Desktop team fixes the bug in their source code, would Debian get the latest source code, recompile, and distribute the fix in the current distribution? Or could Debian fix their source code in their repository, recompile, and distribute the fix? And how would Devuan pick up the fix?
* The GUI bug
If you're curious what the GUI bug is:
- Launch the pluma text editor.
- File -> Open
- The Character Encoding combo box doesn't show that anything is selected. In earlier versions of pluma (confirmed on Devuan Jessie), the combo box defaults to the first choice "Automatically Detected". Internally, the first choice IS selected, but the GUI doesn't show it.
I also need an init script so that I can launch the x11vnc server without a user logging in. I broke up the task into two subtasks:
- Figure out how to set up the init script, how it launches, what args it receives.
- Write the logic for starting and shutting down the x11vnc server.
Today, I figured out some of the basics for writing an init script, starting it etc. Next time I have free time, I'll figure out how to start and stop the vnc server from the init script.
These steps were tested in Devuan Daedalus, with the MATE desktop environment.
The init scripts are located in /etc/init.d. In this example, we'll create a script that will log all of the script args into a log file.
sudo pluma /etc/init.d/yourinitscript.sh
Put these contents in the file.
#!/bin/sh
#If you modify the INIT INFO section, update the rc.d links with these commands (as root):
# update-rc.d yourinitscript.sh remove
# update-rc.d yourinitscript.sh defaults
### BEGIN INIT INFO
# Provides: yourinitscript.sh
# Required-Start:
# Required-Stop:
# Default-Start: 1 2 3 4 5
# Default-Stop: 0 6
### END INIT INFO
#Write the current date/time, previous and current run levels, and the args passed into this script into the log file.
echo "`date` | runlevel `runlevel` | script args received: $*" >> /var/tmp/yourinitscript.log
Sysvinit uses the INIT INFO section to figure out the dependencies and what order each init script should be launched. These five appear to be the minimum required params that an init script needs to define.
- Provides : I think sysvinit uses this to identify your script when it figures out the dependencies.
- Required-Start: This defines what other init scripts must be run before telling yourinitscript.sh to start its service. In this example, we don't have any dependencies, so we leave it blank.
- Required-Stop: Other init scripts that must be stopped before telling yourinitscript.sh to stop its service.
- Default-Start: When sysvinit is running at these run levels, yourinitscript.sh will be started if it's not started.
- Default-Stop: When sysvinit is running at these run levels, yourinitscript.sh will be stopped if it's started.
First, the script must be executable.
sudo chmod +x /etc/init.d/yourinitscript.sh
Next, we tell sysvinit to set up the symlinks that will run yourinitscript.sh whenever the services needs to be started or stopped.
sudo update-rc.d yourinitscript.sh remove
sudo update-rc.d yourinitscript.sh defaults
The symlinks are created in the subdirectores for each run level: /etc/rc0.d, /etc/rc1.d, /etc/rc2.d, etc.
I haven't figuured out why, but if you modify the script's INIT INFO section and then run "update-rc.d defaults", the command will give warnings. The workaround is to always "remove" any previously setups of yourinitscript.sh, then set up it with "defaults".
To test that the script is working correctly, use the "service" command. You can pass in any args into your init script.
sudo service yourinitscript.sh aaa bbb ccc
Read the log file.
cat /var/tmp/yourinitscript.log
You should see this line in the log file.
Sun Jun 23 07:32:18 PM PDT 2024 | runlevel N 2 | script args received: aaa bbb ccc
Notice that the previous run level is "N", which means there's no previous run level. The current run level is "2", which is defined in /etc/inittab.
# The default runlevel.
id:2:initdefault:
Also notice that the script received the 3 dummy args "aaa", "bbb", and "ccc". This means that if necessary, your init script can receive all sorts of args. That is, it's not restricted to a specific set of keywords.
Reboot the PC, then check the log file.
cat /var/tmp/yourinitscript.log
There should be two new lines.
Sun Jun 23 19:33:58 PDT 2024 | runlevel 2 6 | script args received: stop
Sun Jun 23 19:34:26 PDT 2024 | runlevel N 2 | script args received: start
Notice that on the first line, the previous run level is "2" and the current runlevel is "6". "6" is the runlevel that means the PC is rebooting.
Also notice that the script received the "stop" arg when the PC was shutting down for a reboot, and the "start" arg during the next boot. So your init script should at least handle these two args.
Shut down the PC. Then turn it back on.
cat /var/tmp/yourinitscript.log
There should be two new lines.
Sun Jun 23 19:45:27 PDT 2024 | runlevel 2 0 | script args received: stop
Sun Jun 23 19:46:04 PDT 2024 | runlevel N 2 | script args received: start
Notice that during the shutdown, the current runlevel is "0". "0" is the runlevel that means the PC is shutting down (halting).
To uninstall the init script, first remove the symlinks.
sudo update-rc.d yourinitscript.sh remove
Optionally, delete the script. Make sure you have a backup copy of this script so you can install it again if needed!
sudo rm /etc/init.d/yourinitscript.sh
Hopefully, these steps are helpful to someone.
One last thought. Since you mentioned heat, I found a comparison between your i7-3520M and the RK3588 at gadgetversus.com. If the TDP numbers are accurate, then the TDP is 35W vs 12W. Which means your lap or whatever body part you put your laptop on should definitely be less toasty. Also, other benchmark numbers at the end matches my conclusion - a little slower in single threaded performance, more performance with multithreaded workloads.
@zapper - more specifically, AMD's low end mobile 2018 processor.
I don't think the RK3588 would be twice as fast. More fun with passmark numbers
i7-3520M | 2 cores / 4 threads | 2871 / 1743
RK3588 | 4 cores + 4 cores | 4515 / 1479
From these numbers, the RK3588 would be slightly slower in single threaded, but more total compute power if you can use all 8 cores.
@zapper The Phenom II X6 1100T was released around 2010-2011, and that was the top of the line for the Phenom II series. The Piledriver series was released around 2012-2013. So assuming that the passmark scores are a reasonable estimate of performance, the 8-core RK3588 performs roughly the same as 2010-2013 desktop CPUs.
As for the current gen laptop CPUs, I've only looked at AMD laptop CPU scores on passmark, but maybe that will give you a little more helpful info.
These two are the oldest AMD CPUs based on the first generation Zen architecture that I could find.
2200U | 2 cores / 4 threads | 3700 / 1679 | TDP 12–25 W | released: 2017-2018
2300U | 4 cores / 4 threads | 5532 / 1746 | TDP 12–25 W | released: 2018
These are the lowest two models. So the 8-core RK3588 has roughly comparable performance to AMD's lowest end laptop CPUs from around 2018, 6 years ago.
You also mentioned the Intel N100. I was curious about it, and looked it up on passmark:
N100 | 4 cores / 4 threads | 5557 / 1959 | TDP 6 W | released: 2023
The N100 TDP is only 6 watts, which means very low heat. That's still performs better than the RK3588, based on passmark's scores.
So hopefully, that gives you an idea on how the RK3588 roughly compares to a few laptop CPUs.
I noticed that the RK3588 shows up in passmark's midrange CPU benchmarks . It's current total / single score is 4515 / 1479. So the 8 core RK3588 has roughly the same total performance as the AMD Piledriver FX-6350 6 core. The single threaded score is roughly the same as the AMD Phenom II 1100T. I don't know much about Intel model numbers, so I can't tell what Intel CPUs the RK3588 is roughly comparable to.
EDIT:
OK, I see now that the MNT Pocket Reform is an "open hardware" laptop. That explains why you were asking about mobile CPUs. Sorry, my answer may not have been helpful, since I was comparing to desktop CPUs that I knew of.
One more quick test result: I just discovered that in UEFI boot, I can change the keyword "linuxefi" to "linux". I ran a quick test on the mini PC (UEFI boot only), and all 4 memtest files run successfully with the "linux" keyword.
Since the legacy boot only lets me change the file path, there aren't any new tests to run.
So to summarize the current problem, in legacy boot, the current default "Memory Test" menu option will hang the PC.
I have found that memtest in the live builds is a useful tool. For example, when someone gives me a PC to test and troubleshoot, I use the memtest to confirm that all memory sticks are working. Then I load the live desktop to check what hardware is installed on the PC. In a few cases, I have copied files from the PC's storage drives. So yes, memtest has been useful.
Here are my test notes.
- The sha256 file is correct for the iso file.
- When I mount the iso to the file system, I see these 4 files in the /live directory:
memtest86+ia32.bin memtest86+ia32.efi memtest86+x64.bin memtest86+x64.efi
- Legacy boot only test notes and results:
- The default path for the Memory Test menu option is:
/live/memtest86+x64.bin
- /live/memtest86+x64.bin -> The PC hangs.
- /live/memtest86+x64.efi -> Memtest works.
- /live/memtest86+ia32.bin -> The PC hangs.
- /live/memtest86+ia32.efi -> Memtest works.
- UEFI boot only test notes and results:
- The default path for the Memory Test menu option is:
/live/memtest86+x64.efi
- /live/memtest86+x64.bin -> Memtest works.
- /live/memtest86+x64.efi -> Memtest works.
- /live/memtest86+ia32.bin -> The PC hangs.
- /live/memtest86+ia32.efi -> The PC hangs.
- I tested on 3 difference PCs:
- A 2010 PC, so it's legacy boot only.
- A 2019 PC, which has both boot options.
- A 2022 mini PC, which is UEFI boot only.
The results are confirmed on multiple PCs.
I'm not experienced with legacy vs UEFI booting. But it seems strange to me that in legacy boot mode, both .bin files failed to run, but the .efi files worked. Also, in UEFI boot mode, both x64 files worked and both ia32 files failed to run, which also seems strange to me. Is this the expected results?
In the Devuan Daedalus amd64 desktop live iso image, when I tried to run the memory test option, I get the error "/live/memtest - no such file or directory". The memory test loads and runs correctly in Daedalus amd64 minimal-live image. So I can at least use the minimal-live to test my RAM.
I tested several of the previous Devuan releases. Here are my results:
* Memtest launches and runs:
- devuan_daedalus_5.0.0_amd64_minimal-live.iso
- devuan_beowulf_3.1.1_amd64_desktop-live.iso
- devuan_jessie_1.0.0_amd64_desktop-live.iso
* /live/memtest not found:
- devuan_daedalus_5.0.0_amd64_desktop-live.iso
- devuan_chimaera_4.0.3_amd64_desktop-live.iso
- devuan_ascii_2.0.0_amd64_desktop-live.iso
When I mounted the isos, I see that in the /live directory, the memtest app really is missing, so it's not a menu option error. Maybe something went wrong when the iso image was created?
I don't know who fixed what, but the packages that got moved to local/obsolete appears normal again. Thanks to whoever it was.
Looks like /jessie/main/binary-amd64/Packages is supposed to say that apache2 version is "2.4.10-10+deb8u12". It's actually /jessie-security/main/binary-amd64/Packages that says apache2 version is "2.4.10-10+deb8u14". Something must have happened in jessie-security a month ago, but has been fixed within the past week.
On my Devuan Jessie PC, many packages have been moved to the Installed (local or obsolete) status, such as apache2, openssh-client, perl, python, samba, tar.
The problem appears to be caused by a Packages file containing older versions of these packages:
http://deb.devuan.org/merged/dists/jess … ackages.gz
Last modified date: 2019-04-30 05:17
size: 8.7M
For example, apache2: My installed apache2 version is "2.4.10-10+deb8u14", but the Packages file version is "2.4.10-10+deb8u12". Any idea what's going on?
Package: apache2
Version: 2.4.10-10+deb8u12
Installed-Size: 527
Maintainer: Debian Apache Maintainers <debian-apache@lists.debian.org>
Architecture: amd64
Replaces: apache2.2-common, libapache2-mod-macro (<< 1:2.4.6-1~)
Provides: httpd, httpd-cgi
Depends: lsb-base, procps, perl, mime-support, apache2-bin (= 2.4.10-10+deb8u12), apache2-utils (>= 2.4), apache2-data (= 2.4.10-10+deb8u12)
Conflicts: apache2.2-common (<< 2.3~)
Pre-Depends: dpkg (>= 1.17.14)
Breaks: libapache2-mod-macro (<< 1:2.4.6-1~)
Homepage: http://httpd.apache.org/
Recommends: ssl-cert
Description: Apache HTTP Server
Description-md5: d02426bc360345e5acd45367716dc35c
Suggests: www-browser, apache2-doc, apache2-suexec-pristine | apache2-suexec-custom
Tag: role::metapackage, suite::apache
Section: httpd
Priority: optional
Filename: pool/DEBIAN/main/a/apache2/apache2_2.4.10-10+deb8u12_amd64.deb
Size: 208468
MD5sum: 0c54378f55125582eae37c07bdaab8d5
SHA1: 1c3ece302d94bc854abd1859edcdd713dbd91ebd
SHA256: a7890679b519b12578b8fe3485a2a235c8f2d5ee9f6b045e5e218aff9fef1da5
All of my original problems have been resolved. I think the repackaging of policykit-1 fixed it. Please pass a thank-you to Centurion_Dan for updating policykit-1.
golinux - I don't think I'm doing any kind of redirecting for the way my devuan mirror is set up. I followed these apt-mirror instructions, and to expose the deb.devuan.org from my local mirror server to my devuan jessie PC, I think I just need to change my /var/www/merged symlink to point to my local mirror of the deb.devuan.org packages, as shown in these instructions.
Oh I didn't know there were instructions for mirroring the Devuan repositories. I used the apt-mirror script, which had previously worked for mirroring Ubuntu 10.04 repositories, and has also been working for Devuan Jessie.
I'm in the middle of mirroring 147.3 GB from the new URL at deb.devuan.org, which will take a few days on my slow home connection, so I haven't tested if this will fix my problems.
I found a workaround: Downgrade libpolkit-agent-1-0, libpolkit-backend-1-0, and libpolkit-gobject-1-0 from 0.105-15~deb8u3 to 0.105-9+devuan1.
- Launch Synaptic Package Manager.
gksudo synaptic-pkexec
- Find each of the 3 packages and press CTRL+E, or from the menu: Package -> Force Version.
- Select 0.105-9+devuan1.
This fixed the 3 problems I reported in my original post.
Here's the log of today's update from /var/log/apt/term.log. Several packages are related to a "policy kit", which seems related to the authentication problems reported below.
Log started: 2018-07-30 20:41:59
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 154568 files and directories currently installed.)
Preparing to unpack .../libssl1.0.0_1.0.1t-1+deb8u9_amd64.deb ...
Unpacking libssl1.0.0:amd64 (1.0.1t-1+deb8u9) over (1.0.1t-1+deb8u8) ...
Preparing to unpack .../libidn11_1.29-1+deb8u3_amd64.deb ...
Unpacking libidn11:amd64 (1.29-1+deb8u3) over (1.29-1+deb8u2) ...
Preparing to unpack .../libpolkit-gobject-1-0_0.105-15~deb8u3_amd64.deb ...
Unpacking libpolkit-gobject-1-0:amd64 (0.105-15~deb8u3) over (0.105-9+devuan1) ...
Preparing to unpack .../libpolkit-agent-1-0_0.105-15~deb8u3_amd64.deb ...
Unpacking libpolkit-agent-1-0:amd64 (0.105-15~deb8u3) over (0.105-9+devuan1) ...
Preparing to unpack .../libpolkit-backend-1-0_0.105-15~deb8u3_amd64.deb ...
Unpacking libpolkit-backend-1-0:amd64 (0.105-15~deb8u3) over (0.105-9+devuan1) ...
Preparing to unpack .../busybox_1%3a1.22.0-9+deb8u2_amd64.deb ...
Unpacking busybox (1:1.22.0-9+deb8u2) over (1:1.22.0-9+deb8u1) ...
Preparing to unpack .../openssl_1.0.1t-1+deb8u9_amd64.deb ...
Unpacking openssl (1.0.1t-1+deb8u9) over (1.0.1t-1+deb8u8) ...
Processing triggers for man-db (2.7.0.2-5) ...
Setting up libssl1.0.0:amd64 (1.0.1t-1+deb8u9) ...
Setting up libidn11:amd64 (1.29-1+deb8u3) ...
Setting up libpolkit-gobject-1-0:amd64 (0.105-15~deb8u3) ...
Setting up libpolkit-agent-1-0:amd64 (0.105-15~deb8u3) ...
Setting up libpolkit-backend-1-0:amd64 (0.105-15~deb8u3) ...
Setting up busybox (1:1.22.0-9+deb8u2) ...
Setting up openssl (1.0.1t-1+deb8u9) ...
Processing triggers for libc-bin (2.19-18+deb8u10) ...
Log ended: 2018-07-30 20:42:03
Three issues found so far:
1. The package "policykit-1" cannot be updated. The new version "0.105-15~deb8u3" cannot be updated because of "Broken dependencies". The Dependencies tab says the upgrade breaks gdm3 (<3.8.4-7~). My installed version is 0.105-9+devuan1.
On a side note, on Saturday Jul 28, I see that Debian put out a security patch for "policykit-1, 0.105-15~deb8u3". That explains where these changes are coming from.
https://lists.debian.org/debian-lts-ann … 00042.html
2. In my MATE desktop, I cannot launch System -> Adminstration -> Synaptic Package Manager. Nothing happens.
From the cmd line, I see a "wrong number of arguments" reported (I changed my real name in the output to John Doe):
~$ synaptic-pkexec
==== AUTHENTICATING FOR com.ubuntu.pkexec.synaptic ===
Authentication is required to run the Synaptic Package Manager
Authenticating as: John Doe,,, (jdoe)
polkit-agent-helper-1: wrong number of arguments. This incident has been logged.
==== AUTHENTICATION FAILED ===
Error executing command as another user: Not authorized
This incident has been reported.
I can work around this problem by running the command as root:
~$ gksudo synaptic-pkexec
3. I also can't shut down the PC from the MATE shutdown button. And I can't change the PC's date time - the Time Settings button is grayed out. I suspect this is all related to the authentication failures like the Synaptic Package Manager.
I can work around this problem from the cmd line:
~$ sudo shutdown -h now
Any ideas on how to fix this?
I've found the cause of the memory leak of the list view object which leads to the crash. This memory leak has been around since Nautilus 2.30.1 (Ubuntu 10.04). Also, I looked at the caja source code on github (1.19.1), and I think the memory leak is still there.
The memory leak fix is pretty simple, and I'd like to submit a patch to it for Devuan Jessie. How do I do that?
Really disappointed that Mate never fixed any of this stuff at least by the version we're using in jessie (1.8.2), I thought that was part of the point of Mate in the first place.
To be fair, the leak is pretty small and only occurs when the user opens and closes the split pane. The callbacks that eventually lead to the crash looks correct to me. The list view object remaining in memory after the split pane is closed is what should NOT be happening.
It's possible that no one figured out that the crash is triggered by both the split pane and Preferences dialog. You can open and close the split pane, do a bunch of other stuff for a few hours, then open the Preferences dialog, and crash.
Are you on jessie? hardware?
Yes, I'm using devuan jessie. I have only the MATE desktop installed, no XFCE or any other desktop.
$ lsb_release -a
No LSB modules are available.
Distributor ID: Devuan
Description: Devuan GNU/Linux 1.0 (jessie)
Release: 1.0
Codename: jessie
Based on what I've seen in the code, I don't think hardware matters. But in case it somehow does, it's a PC that I built a while back:
CPU: Athlon II X4 620e
Motherboard: Jetway NC84E-LF
RAM: 4 GB
I have no explanation why caja doesn't crash for you. From what I've seen in the code so far, caja must crash when in list view, if the split pane has been opened and closed, and you launch the File Management Preferences dialog.
- When you launch the File Management Preferences dialog, the code initializes the GUI in the "List Columns" tab.
- The act of initializing this GUI causes settings to be saved to "org.mate.caja.list-view". You can view these settings using dconf-editor.
- Whenever the settings for "org.mate.caja.list-view" are changed, each tab in the main pane or the split pane is called back, so the tab can add or remove columns or change the order to match the new settings.
- Caja creates a list view memory object for each tab that you open.
- When you close each tab, caja properly deletes the list view memory object from memory.
- But when you close the split pane, caja does NOT delete the list view memory object - it remains in memory!
- So when the "org.mate.caja.list-view" settings are changed, the list view memory object representing the closed split pane is still called back! Some of its data contents are now NULL, and when the code tries to use this NULL data, caja crashes.
If I can figure out why the split pane's list view memory object isn't properly deleted from memory when the split pane is closed, I think that will fix the crash, and possibly fix a memory leak as well.
Not happening here. Cannot reproduce on two different machines.
I just discovered that this crash only occurs in List View. It does not occur in Icon View, or Compact View.
Could be a trick question,
Nope, it's not a trick question. I didn't want to waste my time debugging a problem that ended up being a configuration or compiler option.
I've done the same thing at work when I write my own compiling scripts on my local PC - I check what the build scripts do on our build server and make sure my local build scripts use the same config or compiler defined options. This ensures my local builds that I debug with are the same as the ones the customers get.
For example, if my local build had a TIMEOUT variable of 30 sec, but the customer build had a TIMEOUT of 1 sec, my local build will never see the customer's problem. That's what I'm trying to avoid and why I wanted to know how devuan builds the packages.
apt-get source caja
Yeah, I got the source code using this command. I can see that the command downloaded the original caja.1.8.2 source and some debian patches, which the command automatically applied.
Curious if you located the source of the crash (bug) and what it was?
Nope, not yet. That's coming up next once I ensure that my compiled caja has the same settings as the installed caja.
The steps to reproduce the crash:
- Open any caja file manager window.
- Press F3 to open a split pane.
- Press F3 to close the split pane.
- Go to the menu: Edit > Preferences.
- Crash.
This problem doesn't occur in Nautilus 2.30.1 (on Ubuntu 10.04).
Caja is the MATE desktop's file browsing app. I want to compile and debug caja to fix a crash I found. However, my compiled caja looks different than devuan's installed caja. My caja has no menu, no toolbar, and no keyboard shortcuts.
I followed the warning message: "Unable to load ui file caja-shell-ui.xml" through the code. Eventually, I figured out that for my compiled caja, the DATADIR macro was defined as "/usr/local/share". But caja installs its files under "/usr/share".
The solution is that when I run autogen.sh to create the Makefile, I specify the DATADIR path, like this:
./autogen.sh --datadir="/usr/share"
But my larger question is: If I want to be sure my compiled code is the same as Devuan's compiled code, how do I know what cmd line options Devuan used to compile code? This is not just for caja, but for any other package I might compile and debug in the future.
Pages: 1