Bug 34028 - get-edid: segmentation fault
Summary: get-edid: segmentation fault
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: read-edid (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Vladislav Zavjalov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-10-19 13:07 MSK by Andrew Savchenko
Modified: 2018-10-12 14:31 MSK (History)
3 users (show)

See Also:


Attachments
Это мой патч к parse-edid пакета read-edid (986 bytes, patch)
2018-10-11 11:29 MSK, fisk
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Andrew Savchenko 2017-10-19 13:07:42 MSK
On dual-head xinerama setup (single X screen, two monitors):

# get-edid
get-edid: get-edid version 2.0.0

        Performing real mode VBE call
        Interrupt 0x10 ax=0x4f00 bx=0x0 cx=0x0
        Function supported
        Call successful

        VBE version 0
        VBE string at 0x0 "Segmentation fault


$ xrandr
Screen 0: minimum 320 x 200, current 3900 x 1080, maximum 8192 x 8192
DP-1 connected primary 1920x1080+1980+0 (normal left inverted right x axis y axis) 477mm x 268mm
   1920x1080     60.00*+
   1680x1050     59.95
   1280x1024     75.02    60.02
   1440x900      74.98    59.89
   1280x720      60.00
   1024x768      75.03    60.00
   800x600       75.00    60.32
   640x480       75.00    72.81    66.67    59.94
   720x400       70.08
HDMI-1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 521mm x 293mm
   1920x1080     60.00*+  50.00    59.94
   1680x1050     59.88
   1600x900      60.00
   1280x1024     75.02    60.02
   1440x900      59.90
   1280x800      59.91
   1152x864      75.00
   1280x720      60.00    50.00    59.94
   1024x768      75.03    70.07    60.00
   832x624       74.55
   800x600       72.19    75.00    60.32    56.25
   720x576       50.00
   720x480       60.00    59.94
   640x480       75.00    72.81    66.67    60.00    59.94
   720x400       70.08
Comment 1 fisk 2018-10-09 11:55:27 MSK
Я тоже напоролся на эту ошибку. 
Продвижения нет?
Comment 2 Vladislav Zavjalov 2018-10-09 12:03:30 MSK
я уже забыл совсем про этот пакет.
Есть новая версия, 3.0.2, попробую обновить.
Comment 3 Vladislav Zavjalov 2018-10-09 13:45:36 MSK
У меня ошибка воспроизводится, причем и в 2.0.0 и в новом 3.0.2
буду разбираться.
Comment 4 Vladislav Zavjalov 2018-10-09 13:54:49 MSK
соотвествующий bug в ubuntu:
https://bugs.launchpad.net/ubuntu/+source/read-edid/+bug/460471
Comment 5 fisk 2018-10-11 10:10:44 MSK
Позанимался этим вопросом еще. Сейчас выпущена версия read-edid 3.0.2. В ней дописан get-edid, добавлена возможность получать данные из монитора при помощи протокола i2c, нужно только установить модуль ядра. По i2c она теперь работает по умолчанию и отрабатывает без ошибок. Старая возможность получения данных сохранилась (с опцией -с) и там также происходит sigfault, но поддержка i2c решает проблему.
Минус новой версии (на мой взгляд) только в том, что она собирается при помощи cmake. В зависимостях только библиотека libx86.

Может соберете новую версию? Сильно хочется мониторить подключенные к компьютерам устройства с их серийными номерами. 
Правда parse-edid, входящая в состав read-edid игнорирует вывод серийных номеров (я написал патч для нее, чтобы выводила), но ее успешно заменяет утилита decode-edid, входящая в репозиторий.

Новая версия read-edid:
http://www.polypux.org/projects/read-edid/
Comment 6 fisk 2018-10-11 11:29:47 MSK
Created attachment 7805 [details]
Это мой патч к parse-edid пакета read-edid

Может сразу запихнете?
Comment 7 Vladislav Zavjalov 2018-10-11 13:15:20 MSK
Собрал 3.0.2 с патчем от fisk.
Segfault никуда не делся:

# get-edid
This is read-edid version 3.0.2. Prepare for some fun.
Attempting to use i2c interface
No EDID on bus 0
No EDID on bus 1
No EDID on bus 2
No EDID on bus 3
No EDID on bus 4
No EDID on bus 5
No EDID on bus 6
No byte reading on this bus...
Problem requesting slave address: Bad file descriptor
No byte reading on this bus...
Problem requesting slave address: Bad file descriptor
Looks like no busses have an EDID. Sorry!
Attempting to use the classical VBE interface

        Performing real mode VBE call
        Interrupt 0x10 ax=0x4f00 bx=0x0 cx=0x0
        Function supported
        Call successful

        VBE version 0
        VBE string at 0x0 "Segmentation fault
Comment 8 Vladislav Zavjalov 2018-10-11 13:16:46 MSK
Завтра, видимо, должен в Сизифе появиться...
Comment 9 fisk 2018-10-11 13:22:06 MSK
Спасибо!
Comment 10 fisk 2018-10-12 08:03:42 MSK
Чтобы версия 3.0.2 не выпадала по sihfault нужно выполнить:

# modprobe i2c-dev
Comment 11 Vladislav Zavjalov 2018-10-12 13:12:13 MSK
i2c у меня есть, get-edid туда идет (в том выводе, который я привел, это есть), но почему-то ничего не находит. Монитор, видимо, странный.
Comment 12 Andrew Savchenko 2018-10-12 14:31:59 MSK
(In reply to comment #10)
> Чтобы версия 3.0.2 не выпадала по sihfault нужно выполнить:
> 
> # modprobe i2c-dev

Спасибо. Подтверждаю, что с загруженным i2c-dev get-edid работает корректно для обоих мониторов.

(In reply to comment #11)
> i2c у меня есть, get-edid туда идет (в том выводе, который я привел, это есть),
> но почему-то ничего не находит. Монитор, видимо, странный.

У меня в системе три i2c шины, мониторы оказались подключены к двум последним. Попробуйте попробовать каждую шину (-b N), список доступных шин есть в выводе get-edid.