Page 1 of 1

Meld is no longer working. (Salix64 Xfce 14.1)

Posted: 27. Oct 2016, 17:27
by westms
Hi,

for Salix64 Xfce 14.1 with all updates and Linux kernel 4.1.4:

Tried to compare two files with Meld. After clicking the Compare button, nothing happend, but .xsession-errors contained an error message. Tried it from command line too as normal user which produced some message lines too. Also Meld help from commandline gave an error message.
A try from command line as root-user let start Meld and displayed the comparison correctly, but with some messages in the terminal.

The error messages contain hints to semaphores. Semaphores are implemented in Linux via /dev/shm.
With:

Code: Select all

$ ls -ld /dev/shm
drwxr-xr-x 2 root root 40 Okt 27 16:02 /dev/shm
it became visible that the permissions are probably set wrongly. Should /dev/shm not be writable to all?

After:

Code: Select all

# chmod oa+w /dev/shm
I can use Meld as usual.

Just a few weeks ago, I changed the original Linux kernel to version 4.1.4 in Salix64 14.1. Can the change-over be the cause? If yes why? It may well be that I have not used Meld since then and it therefore was not noticed earlier.

What other reasons can be considered?

.xsession-errors:

Code: Select all

/usr/lib64/python2.7/site-packages/gobject/__init__.py:115: Warning: attempting to add an interface (GtkEditable) to class (HistoryFileEntry) after class_init
  type_register(cls, namespace.get('__gtype_name__'))
Traceback (most recent call last):
  File "/usr/lib64/meld/meld/newdifftab.py", line 115, in on_button_compare_clicked
    tab = self.diff_methods[self.diff_type](compare_paths)
  File "/usr/lib64/meld/meld/meldwindow.py", line 703, in append_filediff
    doc = filediff.FileDiff(app.prefs, len(files))
  File "/usr/lib64/meld/meld/filediff.py", line 214, in __init__
    self._cached_match = CachedSequenceMatcher()
  File "/usr/lib64/meld/meld/filediff.py", line 72, in __init__
    None, matchers.init_worker, maxtasksperchild=1)
  File "/usr/lib64/python2.7/multiprocessing/__init__.py", line 232, in Pool
    return Pool(processes, initializer, initargs, maxtasksperchild)
  File "/usr/lib64/python2.7/multiprocessing/pool.py", line 138, in __init__
    self._setup_queues()
  File "/usr/lib64/python2.7/multiprocessing/pool.py", line 233, in _setup_queues
    self._inqueue = SimpleQueue()
  File "/usr/lib64/python2.7/multiprocessing/queues.py", line 352, in __init__
    self._rlock = Lock()
  File "/usr/lib64/python2.7/multiprocessing/synchronize.py", line 147, in __init__
    SemLock.__init__(self, SEMAPHORE, 1, 1)
  File "/usr/lib64/python2.7/multiprocessing/synchronize.py", line 75, in __init__
    sl = self._semlock = _multiprocessing.SemLock(kind, value, maxvalue)
OSError: [Errno 13] Keine Berechtigung

Code: Select all

$ meld Desktop/Projekte/Dynamicip/dynamicip Desktop/Projekte/Dynamicip/dynamicip.rb
/usr/lib64/python2.7/site-packages/gobject/__init__.py:115: Warning: attempting to add an interface (GtkEditable) to class (HistoryFileEntry) after class_init
  type_register(cls, namespace.get('__gtype_name__'))
Traceback (most recent call last):
  File "/usr/bin/meld", line 173, in <module>
    main()
  File "/usr/bin/meld", line 165, in main
    new_window = app.parse_args(sys.argv[1:])
  File "/usr/lib64/meld/meld/meldapp.py", line 169, in parse_args
    tab = open_paths(args, options.auto_compare, options.auto_merge)
  File "/usr/lib64/meld/meld/meldwindow.py", line 796, in open_paths
    tab = self.append_diff(paths, auto_compare, auto_merge)
  File "/usr/lib64/meld/meld/meldwindow.py", line 746, in append_diff
    return self.append_filediff(paths, merge_output=merge_output)
  File "/usr/lib64/meld/meld/meldwindow.py", line 703, in append_filediff
    doc = filediff.FileDiff(app.prefs, len(files))
  File "/usr/lib64/meld/meld/filediff.py", line 214, in __init__
    self._cached_match = CachedSequenceMatcher()
  File "/usr/lib64/meld/meld/filediff.py", line 72, in __init__
    None, matchers.init_worker, maxtasksperchild=1)
  File "/usr/lib64/python2.7/multiprocessing/__init__.py", line 232, in Pool
    return Pool(processes, initializer, initargs, maxtasksperchild)
  File "/usr/lib64/python2.7/multiprocessing/pool.py", line 138, in __init__
    self._setup_queues()
  File "/usr/lib64/python2.7/multiprocessing/pool.py", line 233, in _setup_queues
    self._inqueue = SimpleQueue()
  File "/usr/lib64/python2.7/multiprocessing/queues.py", line 352, in __init__
    self._rlock = Lock()
  File "/usr/lib64/python2.7/multiprocessing/synchronize.py", line 147, in __init__
    SemLock.__init__(self, SEMAPHORE, 1, 1)
  File "/usr/lib64/python2.7/multiprocessing/synchronize.py", line 75, in __init__
    sl = self._semlock = _multiprocessing.SemLock(kind, value, maxvalue)
OSError: [Errno 13] Keine Berechtigung

Code: Select all

$ meld --help
/usr/lib64/python2.7/site-packages/gobject/__init__.py:115: Warning: attempting to add an interface (GtkEditable) to class (HistoryFileEntry) after class_init
  type_register(cls, namespace.get('__gtype_name__'))

Code: Select all

$ su -
Passwort: 
root@schwachrot:~# meld /home/westms/Desktop/Projekte/Dynamicip/dynamicip /home/westms/Desktop/Projekte/Dynamicip/dynamicip.rb
/usr/lib64/python2.7/site-packages/gobject/__init__.py:115: Warning: attempting to add an interface (GtkEditable) to class (HistoryFileEntry) after class_init
  type_register(cls, namespace.get('__gtype_name__'))
Traceback (most recent call last):
  File "/usr/lib64/meld/meld/ui/historyentry.py", line 365, in <lambda>
    entry.connect("changed", lambda *args: self.emit("changed"))
TypeError: <HistoryFileEntry object at 0x1e73e10 (HistoryFileEntry at 0x1f1b1c0)>: unknown signal name: changed
Traceback (most recent call last):
  File "/usr/lib64/meld/meld/ui/historyentry.py", line 365, in <lambda>
    entry.connect("changed", lambda *args: self.emit("changed"))
TypeError: <HistoryFileEntry object at 0x1e73cd0 (HistoryFileEntry at 0x1ed0bb0)>: unknown signal name: changed
/usr/lib64/meld/meld/meldwindow.py:641: Warning: g_object_set_qdata: assertion `G_IS_OBJECT (object)' failed
  self.notebook.remove_page(page_num)
root@schwachrot:~#

Code: Select all

$ meld --version
/usr/lib64/python2.7/site-packages/gobject/__init__.py:115: Warning: attempting to add an interface (GtkEditable) to class (HistoryFileEntry) after class_init
  type_register(cls, namespace.get('__gtype_name__'))
meld 1.8.2

Code: Select all

$ python -V
Python 2.7.5

Re: Meld is no longer working. (Salix64 Xfce 14.1)

Posted: 28. Oct 2016, 16:21
by gapan
I can confirm that /dev/shm should be writable by everyone and that is exactly what your problem is. And that's how it is by default in 14.1. I can't see how that would be changed by a kernel upgrade, but an easy fix would be to add that chmod command in your /etc/rc.d/rc.local.

Re: Meld is no longer working. (Salix64 Xfce 14.1)

Posted: 28. Oct 2016, 21:56
by westms
gapan wrote:I can confirm that /dev/shm should be writable by everyone and that is exactly what your problem is. And that's how it is by default in 14.1. I can't see how that would be changed by a kernel upgrade, but an easy fix would be to add that chmod command in your /etc/rc.d/rc.local.
Thanks so far for confirming the problem.

My manual changes to the directory permissions for /dev/shm are not permanent of course.

I can imagine that a udev rule is necessary. With a udev rule, the necessary directory permissions could be set in general after startup.

Perhaps a kernel module must be loaded explicitly for the kernel 4-series. Something that was still built-in the kernel 3-series. But I think rather, this is not appropriate.

In Salix64 14.1 I can't find a suitable udev rule (of course). Can a suitable module or a matching udev rule be found in Salix64 14.2?

In preparation for the kernel upgrade I had used the following:

Code: Select all

upgradepkg --reinstall --verbose kernel-huge-4.1.4-x86_64-1gv
upgradepkg --reinstall --verbose kernel-modules-4.1.4-x86_64-1gv.txz
upgradepkg --reinstall --verbose kernel-firmware-20150804git-noarch-1gv.txz
Then lilo -v and a reboot. But do not know whether that is sufficient. Did I leave something out?

The upgrades I have taken from http://people.salixos.org/gapan/kernel-4.1.4/.

Re: Meld is no longer working. (Salix64 Xfce 14.1)

Posted: 30. Oct 2016, 11:38
by gapan
I have no such problem with 14.1 and these kernels. And it's definitely not something with kernels 4.x in any case. So it must be something else. And yes, you could create a suitable udev rule. Or, as I suggested in my previous post, put the chmod in your /etc/rc.d/rc.local. Should have the same effect.