web-dev-qa-db-fra.com

Le disper -l sur 18.04 génère une faute de segmentation. Y a-t-il des alternatives?

J'ai utilisé disper -l pendant de nombreuses générations d'ubuntu afin de déterminer le moniteur auquel je suis connecté et de déterminer si un moniteur externe avec vga ou hdmi est connecté. Ayant maintenant été mis à niveau vers 18.04, je constate que cette commande génère une erreur de segmentation. Le problème semble être autour depuis un moment, comme indiqué dans ce rapport de bogue mais personne ne semble faire quoi que ce soit à ce sujet. Y at-il un autre programme qui a la même fonctionnalité? J'ai consulté xdpyinfo qui contient de nombreuses informations, mais pas ce dont j'ai besoin: suffisamment d'informations de résolution pour distinguer les moniteurs, ainsi que des informations indiquant si plusieurs moniteurs sont connectés et par quelle connexion.

Merci!

4
Leo Simon

Je peux confirmer ceci bug 1655275 , il semble être causé par des correctifs anti-Meltdown ou anti-Specter (ou quelque chose de similaire à CVE-2017-1000364 avec Scilab ) depuis mon rapport journal des collisions dans commentaire n ° 9 contient des lignes étranges:

SegvAnalysis:
 Segfault happened at: 0x7f1233f14add <XQueryExtension+45>: mov    0x968(%rdi),%rax
 PC (0x7f1233f14add) ok
 source "0x968(%rdi)" (0xffffffffd63a1188) not located in a known VMA region (needed readable region)!
 destination "%rax" ok
SegvReason: reading unknown VMA

Je n'ai jamais utilisé disper, mais je peux recommander xrandr comme alternative.

4
N0rbert

Je peux aussi confirmer le bogue.

Mais bonne nouvelle! Cela semble extraordinairement facile à corriger .

J'ai généré une version corrigée (disponible sur Github si cela vous intéresse),

git clone <URL>
cd disper
make all
Sudo make install

Mais s'il vous plait, ne faites pas confiance inconditionnellement à des sources aléatoires (par exemple moi).

Lisez ci-dessous pour un guide complet sur la façon de faire cela pour vous-même, à la place!

Cherry ramasser AUR dans Debian en amont

Clonage et ajout à distance

Cloner la source Debian (source ici ),

git clone https://salsa.debian.org/python-team/applications/disper.git
cd disper

Ajouter AURen amont comme distant,

git remote add AUR https://github.com/apeyser/disper
git fetch --all
git remote -v

[sortie]

AUR https://github.com/apeyser/disper (fetch)
AUR https://github.com/apeyser/disper (Push)
Origin  https://salsa.debian.org/python-team/applications/disper.git (fetch)
Origin  https://salsa.debian.org/python-team/applications/disper.git (Push)

Oui, ils sont différents référentiels - pas simplement des branches différentes - mais pour ce patch de sélection de cerises, il est étonnamment commode de faites semblant, pendant un moment.

Juste ne fusionnez pas les "branches" à moins que vous n'ayez une bonne raison de ne pas causer un désordre inutile.

Vérification de la master 's

"Renommer" (créer de nouvelles branches) leurs master respectifs (pour votre propre enregistrement),

git checkout -b AUR-master AUR/master
git checkout -b debian-master debian/master

[sortie]

Branch 'AUR-master' set up to track remote branch 'master' from 'AUR'.
Switched to a new branch 'AUR-master'
Switched to a new branch 'debian-master'

Vérification de la santé mentale à ce sujet,

git branch -vv

[sortie]

  AUR-master    4c36710 [AUR/master] Update README
* debian-master e3ca840 d/control: Remove ancient X-Python-Version field
  debian/master e3ca840 [Origin/debian/master] d/control: Remove ancient X-Python-Version field

semble bon !

Vous pouvez explorer et voir les différences comme ça,

git log --graph --decorate --oneline debian-master
git log --graph --decorate --oneline AUR-master
git diff debian-master AUR-master

Identifier les nouveaux commits

Ce qui nous intéresse, c'est que ça,

git log debian-master -1

[sortie]

commit e3ca840a48208a79a5c96da1bd9f6f1b845f5773 (HEAD -> debian-master, Origin/debian/master, Origin/HEAD, debian/master)
Author: Ondřej Nový <[email protected]>
Date:   Mon May 14 08:10:02 2018 +0200

    d/control: Remove ancient X-Python-Version field

n'inclut pas le correctif récent ici,

git log AUR-master -4

[sortie]

commit 4c367108b370d57ce178863fed7640bb846d3186 (AUR/master, AUR-master)
Author: Alexander Peyser <[email protected]>
Date:   Thu Aug 23 17:16:42 2018 +0200

    Update README

commit 4c635d65244bcb2a86a9da86d00007de96a23626 (tag: disper-0.3.1.1)
Author: Alexander Peyser <[email protected]>
Date:   Thu Aug 23 16:02:23 2018 +0200

    apply XOpenDisplay return type patch

commit 01132563030b9230e8f007794c3269dd913c3052
Author: Alexander Peyser <[email protected]>
Date:   Thu Aug 23 16:17:07 2018 +0200

    Update INSTALL and README

commit d0498b7892b36d183d09b3d905296ee7456ff24d (tag: disper-0.3.1)
Author: [email protected] <>
Date:   Tue Apr 23 12:01:43 2013 +0200

    also update Debian version number

Trois (3) nouveaux commits! Le second est le correctif.

Cherry picking (ce que nous voulons)

Basculez vers debian-master et créez une version locale (pour ne pas confondre la fusion avec les versions amont),

git checkout debian-master
git checkout -b local
git cherry-pick 0113256..4c36710

[sortie]

[local d05e2bd] apply XOpenDisplay return type patch
 Author: Alexander Peyser <[email protected]>
 Date: Thu Aug 23 16:02:23 2018 +0200
 1 file changed, 12 insertions(+), 2 deletions(-)
error: could not apply 4c36710... Update README
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'

Bien sûr, nous nous attendions à un conflit de fusion ...

Mais vous attendiez-vous vraiment à ce que ce soit seulement README? Réparons-le!

git mergetool  # or, vimdiff README (or whatever)
diff -NaurbB README* --color
git cherry-pick --continue
rm README.orig

J'ai fusionné dans la nouvelle section Nice de README et sanity vérifié, puis continué avec un message commit inchangé.

Bump la version

Identifier où la version est conservée,

rg 0.3.1  # or, grep -rn 0.3.1 (or whatever)
git blame debian/changelog

Vous pouvez donc ajouter une section de version factice à debian/changelog (pour votre propre compte rendu), ou non.

vim debian/changelog
git add debian/changelog

J'ai copié 0.3.1-3 dans une nouvelle section 0.3.1-4 et écrit quelques mots.

Essaye-le!

Est-ce que ça marche?

make <Tab>
make all -n
make install -n

Cela me semble bien. Installons,

make all
Sudo make install
~~

Confirm that it works,

~~~bash
disper -l

Commençons et étiquetons (pour référence future),

git commit -v
git tag local/0.3.1-4 -a

Je recommande vraiment une balise ou quelque chose et une version bosse. Sois gentil pour t'avenir.

Heureux piratage.

2
Yngman