LINUX.ORG.RU

XFCE4 + pony = /)(^3^)(\

 , ,


0

1

Конечно, не мне тягаться с zezic, но я все же посмел разбавить серость и уныние скриншотов в галерее своим скриншотом с пони.

Собственно, вся информация о системе на скриншоте.

Однако, хотя я пришел в галерею, я пришел не столько системой хвастать, сколько рассказать об одной проблеме из расчета, что о ней, в итоге, прочитает много людей и может кто подскажет что делать. У меня, друзья, не работает звук (и видео не играется нормально — либо стерео не работает, либо жестокая непоправимая рассинхронизация, vlc просто не играет, это все время). Однако он не просто «не работает»: до тех пор, пока я не попробую быстро изменить громкость любого канала (Master, Headphones), кроме PCM, звук работает, но когда я начинаю быстро менять громкость на указанных каналах, программа-миксер зависает, а mocp, например, начинает проигрывать звук дергано, как HD-видео на медленном соединении. Поиски и чтение форумов результатов не принесло, поэтому я решил замерить за сколько времени(с момента, когда ломается звук) amixer последовательно изменит громкость от нуля до 80%. Написал несложный скрипт, который это делал. Тест с работающим звуком:

plcmn@equestria:~$ time ./test.sh 
real	0m0.743s
user	0m0.350s
sys	0m0.203s
однако если запустить этот же скрипт повторно, проявляется этот баг и результат становится таким:
plcmn@equestria~$ time test.sh
real	4m41.763s
user	0m0.607s
sys	0m12.037s
plcmn@equestria:~$ cat test.sh
export i=0 
while [ $i -lt 80 ] 
do 
  amixer set Master $i% 
  let i=$(($i+1)) 
done

Смотрится невероятно. Я полез в код alsa-utils. Я, конечно, даже не джуниор, но там ТАКОЙ код. При проверке кода alsa-lib с помощью cppcheck, я обнаружил, например

[src/mixer/simple_none.c:1661]: (error) Array 'simple.ctls[14]' accessed at index 14, which is out of bounds.

Весело, в общем. Но касательно моей проблемы я ничего не нашел, поэтому я полез делать нубодебаг, печатая в stderr время задержек между выполнением блоков инструкции, таким образом локализовав проблемную строчку:

// 430 amixer.c
err = vol_ops[dir].v[vol_type].set(elem, chn, val, correct);

// Которая вызывает

int snd_mixer_selem_set_playback_volume(snd_mixer_elem_t *elem, snd_mixer_selem_channel_id_t channel, long value)
{
	CHECK_BASIC(elem);
	CHECK_DIR_CHN(elem, SM_CAP_PVOLUME, SM_CAP_PVOLUME_JOIN, channel);
	return sm_selem_ops(elem)->set_volume(elem, SM_PLAY, channel, value);
}

// Из libasound

Задержка, измерявшаяся с помощью clock() (с использованием CLOCKS_PER_SEC) там составляла около 0.173488 мс. Real time было больше (около секунды-двух). Я понял, что придется лезть в alsa-lib, склонировал git, попробовал собрать, но не собирается. Пока что остановился на этом, пытаюсь собрать.

Если что-нибудь найду, обязательно напишу, по крайней мере, в багтрекер, а может (если смогу) и патч сделаю.

Почему я все это написал. Быть может кто-либо из лоровцев сталкивался с подобной проблемой и может подсказать мне в чем дело?

P.S. А ошибок cppcheck показал много, даже очень, незакрытые va_start(), null pointer dereference и прочие. Очень некрасивый код, там есть, например, реализация полиморфизма через указатели на фукнции, приплетен язык Python (alsa-lib из-за этого и не собирается, пока не знаю в чем проблема, ругается на несуществующего члена структуры, его там действительно нет, декларации нигде не нашел, комментирование строчки родило новые проблемы, поэтому это я пока оставил на потом) и прочие радости.
P.P.S. При перезагрузке со сломанным звуком (единственный способ решить проблему) в выводе показывается сообщение об ошибке связанное с аудио, точно не помню, могу, если кому интересно, посмотреть и сюда добавить. Даже при сломанном звуке chromium продолжает нормально играть и музыку и видео, а deadbeef, например, без проблем играет музыку. Но все прочее, что я пробовал (а пробовал я много, я даже pulseaudio ставил и пытался настроить, но последняя не видела выход для наушников, только hdmi, поэтому я ее удалил) не работало.
P.P.P.S. Забыл добавить, спасибо Khnazile за напоминание:

$ lspci -vv
00:01.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Kabini HDMI/DP Audio
	Subsystem: Dell Device 0614
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin B routed to IRQ 40
	Region 0: Memory at f0240000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: [48] Vendor Specific Information: Len=08 <?>
	Capabilities: [50] Power Management version 3
		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [58] Express (v2) Root Complex Integrated Endpoint, MSI 00
		DevCap:	MaxPayload 256 bytes, PhantFunc 0
			ExtTag+ RBE+
		DevCtl:	Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
			RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
		DevCap2: Completion Timeout: Not Supported, TimeoutDis-, LTR-, OBFF Not Supported
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
	Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fee0f00c  Data: 4153
	Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
	Kernel driver in use: snd_hda_intel
	Kernel modules: snd_hda_intel

--
00:14.2 Audio device: Advanced Micro Devices, Inc. [AMD] FCH Azalia Controller (rev 02)
	Subsystem: Dell Device 0614
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 32, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 41
	Region 0: Memory at f0244000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: [50] Power Management version 2
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fee0f00c  Data: 4163
	Kernel driver in use: snd_hda_intel
	Kernel modules: snd_hda_intel


$ aplay -l
plcmn@equestria:~/$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Generic [HD-Audio Generic], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Generic_1 [HD-Audio Generic], device 0: ALC3223 Analog [ALC3223 Analog]
  Subdevices: 0/1
  Subdevice #0: subdevice #0

No offense. Просто рассказываю про свой интересный опыт. :)

Всем добра и дружбомагии!

>>> Просмотр (1366x768, 481 Kb)



Проверено: JB ()
Последнее исправление: cetjs2 (всего исправлений: 5)

Из серии «Вы когда спать ложитесь, бороду на одеяло или под одеяло кладете»:

Постоянно меняющиеся секунды не мешаются?

fornlr ★★★★★
()

sage

Стоит отметить прекрасную гармонию обоев и дистрибутива.

fmdw
()

Пони уже воспринимаются как приветы из прошлого. Через пару лет этот проходняк даже самые упоротые понифаги не вспомнят.

crowbar
()
Ответ на: комментарий от alegz

DHX — канадская студия, есличо.

Ну, Hasbro Studios в Америке, там вроде бы сценаристы сидят, а анимацию мы сами нарисуем.

proud_anon ★★★★★
()

На xfce-панели indicator-appmenu? Если да, скажи в LO менюшка пашет и не падает ли плагин?

NK ★★★★★
()
Ответ на: комментарий от fornlr

Нет, я все равно больше в центр экрана смотрю, чем на его края. Удобно, когда надо грубо померить сколько времени идет тот или иной процесс (хотя это мне понадобилось всего пару раз).

Plcmn
() автор топика
Ответ на: комментарий от NK

Нет, там гномовская:

plcmn@equestria:~$ yaourt -Ss globalmenu-xfce4
aur/gnome-globalmenu-xfce4 0.7.8-9 [installed] (48)
    Global Menu Bar built for using with Xfce desktop

Plcmn
() автор топика
Ответ на: комментарий от zezic

Да, было 37 — это я что-то оплошал, 36, конечно, лучше.

Хинтование было легкое, со средним шрифт смотрится лучше.

Plcmn
() автор топика

Очень некрасивый код, там есть, например, реализация полиморфизма через указатели на фукнции, приплетен язык Python (alsa-lib из-за этого и не собирается, пока не знаю в чем проблема, ругается на несуществующего члена структуры, его там действительно нет, декларации нигде не нашел, комментирование строчки родило новые проблемы, поэтому это я пока оставил на потом) и прочие радости.

Это еще сколько такого в самом ядре...

Deleted
()
Ответ на: комментарий от w1nner

Это что, вирус какой-то?

Да. Очень заразныый. Поражает ЦНС. Передаётся через интернеты. Инкубационный период может быть очень долгим. Болезнь может протекать в особо тяжёлых формах, сроки также разнятся, в среднем около двух лет. В качестве вакцины рекомендуются Ракосель и PONY.MOV.

MiniRoboDancer ★☆
()

тягаться с zezic

Чего? Не вижу у него ни на одном скриншоте пони.

MiniRoboDancer ★☆
()
Ответ на: комментарий от Essentuki_17

У многих тут уже иммунитет к поням выработался, вбросы не дают такой бурной реакции, как год-полтора назад. Серьёзно и неутомимо бомбило, пожалуй, только у Saloed, но он ушёл. Пора вбрасывать чем-то другим и ждать, когда иммунитет ослабнет (тенденция к этому есть, но слишком частые вбросы поней её могут сломать).

MiniRoboDancer ★☆
()
Ответ на: комментарий от crowbar

На чём основан сей опрометчивый вывод? Если даже исчезнет сериал — сформировавшаяся вокруг него фан-культура настолько богата и самодостаточна (например, многие давно не интересуются каноном, зато активно упарываются FoE), что даже приток ньюфагов будет поддерживать ещё долгие годы, не говоря уж о верных поклонниках.

MiniRoboDancer ★☆
()
Ответ на: комментарий от MiniRoboDancer

Чьи, хасбровские? Гггг. Тогда бы и их мерч был ориентирован на битардов, а не на ЦА дошкольного возраста с задержкой умственного развития.

alegz ★★★★
()
15 февраля 2015 г.
Ответ на: комментарий от alegz

хасбровские

А чё сразу хазбровские? За FiM ряд компаний и сообществ стоит, с различными интересами. По сути, это коммерциализированный фанпроект, создаваемый при финансовой поддержке Хазбро.

MiniRoboDancer ★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.