geektimes

Skype For Linux перестал поддерживать процессоры AMD старше 5 лет

  • вторник, 31 октября 2017 г. в 03:12:50
https://geektimes.ru/post/294815/
  • macOS
  • Windows
  • Linux
  • IT-компании


Вот уже несколько месяцев, как вход в программу для владельцев многих AMD процессоров знаменуется белым окном, и никак не реагирующими пунктами меню. Насколько известно, пользователей Windows и Mac данная проблема пока не коснулась. Радость от выпуска нового Skype для GNU/Linux не была долгой…



Проблема была идентифицирована, как использование SSSE3 (не путать с SSE3) расширения, отсутствующего на предыдущих моделях AMD процессоров (не исключительная ситуация, например расширение SSE4a отсутствует на Intel).


На запуске Skype создает три процесса, и тот, что отвечает за рендеринг, очень быстро исчезает. Приаттачится к нему, чтобы посмотреть в чем дело, довольно просто:


$ gdb --pid=$(pgrep -f "skypeforlinux --type=renderer")

Дальнейшее исполнение процесса прерывается строками:


Thread 17 "skypeforlinux" received signal SIGILL, Illegal instruction.
[Switching to Thread 0x7fd117f91700 (LWP 12265)]
0x00007fd11c335bc1 in ?? () from /usr/share/skypeforlinux/resources/app.asar.unpacked/node_modules/slimcore/bin/slimcore.node
(gdb) x/5i $pc
=> 0x7fd11c335bc1:      pshufb %xmm1,%xmm0
   0x7fd11c335bc6:      movdqa 0x270(%rsp),%xmm1
   0x7fd11c335bcf:      cmp    $0x1,%eax
   0x7fd11c335bd2:      pand   %xmm0,%xmm1
   0x7fd11c335bd6:      por    0x130(%rsp),%xmm1

Можно лицезреть, как Skype пытается воспользоваться pshufb инструкцией, которую вам предоставляет SSSE3 (или не предоставляет, если вам не повезло).


При наличии исходного кода, данная проблема чинится в течении пары секунд — достаточно добавить опцию -mno-ssse3 в конфигурацию компилятора. Тем не менее, разработчикам Microsoft потребовалось пару месяцев, чтобы суметь отреагировать на такую одновременно простую и распространенную проблему. На 28 странице комментариев к статье о выпуске Skype они наконец дали официальный ответ:


Could you please check if you have a processor without SSSE3 instruction set support? (mostly 5+ years old AMDs).
If that is the case, the system is unfortunately unsupported by Skype. In any other case, please provide us more details, so we can investigate your issue further.

перевод:


Не могли бы вы, пожалуйста, проверить отсутствие поддержки вашим процессором набора инструкций SSSE3 (в основном AMD возрастом 5+ лет)?
В данном случае, система, к сожалению, не поддерживается Skype. В любом другом случае, пожалуйста снабдите нас большими деталями, чтобы мы могли расследовать проблему.

По ссылке, данной работниками Skype, в табе "Skype for Linux system requirements", можно увидеть новое требование:


An Intel Pentium 4 processor or later that's SSE2 and SSSE3 capable

Забавно, что разработчики не только не догадались, как обойти проблему, но даже не сумели поставить обнаружение отсутствия инструкций при запуске Skype с целью показа окна о неподдерживаемой конфигурации, и элегантным выходом.


Пока неизвестно, что послужило причиной такого удара в спину пользователям, и будет ли этот удар нанесен по другим системам.


Данную проблему можно, однако, обойти, если использовать бета-версию SkypeForLinux. Но очевидно, что в долгосрочной перспективе отсутствие обновлений безопасности и патчей к возможным изменениям протокола делает это непривлекательным. Альтернативно, можно перейти на другие видео клиенты.


А что вы бы посоветовали пользователям? Дайте знать в комментариях.