TheBigW / DRC

Digital Room Correction plugin for rhythmbox
GNU General Public License v3.0
39 stars 1 forks source link

application freezes when choosing tools-drc #3

Closed fossfreedom closed 9 years ago

fossfreedom commented 9 years ago

moving forward.

Now when I choose tools-drc the application goes black - basically it freezes.

From the terminal I see this:

(rhythmbox:10574): Gtk-WARNING **: gtk_file_chooser_button_set_property: Choosers of type `GtkFileChooserButton' do not support `GTK_FILE_CHOOSER_ACTION_SAVE'.

(rhythmbox:10574): Gtk-CRITICAL **: gtk_radio_button_set_group: assertion '!g_slist_find (group, radio_button)' failed

last few lines of running rhythmbox -D DRC

(21:04:30) [0x1969b90] [DeserializeClass] /usr/lib/rhythmbox/plugins/DRC/XMLSerializer.py:167: 40
(21:04:30) [0x1969b90] [DeserializeMember] /usr/lib/rhythmbox/plugins/DRC/XMLSerializer.py:144: Deserializing : 

(rhythmbox:10613): Gtk-WARNING **: gtk_file_chooser_button_set_property: Choosers of type `GtkFileChooserButton' do not support `GTK_FILE_CHOOSER_ACTION_SAVE'.

(rhythmbox:10613): Gtk-CRITICAL **: gtk_radio_button_set_group: assertion '!g_slist_find (group, radio_button)' failed
(21:04:30) [0x1969b90] [getDeviceListFromAlsaOutput] /usr/lib/rhythmbox/plugins/DRC/DRCUi.py:317: found pattern : [('0', 'Ensoniq AudioPCI', '0', 'ES1371 DAC2/ADC'), ('0', 'Ensoniq AudioPCI', '1', 'ES1371 DAC1')]
(21:04:31) [0x1969b90] [getDeviceListFromAlsaOutput] /usr/lib/rhythmbox/plugins/DRC/DRCUi.py:317: found pattern : [('0', 'Ensoniq AudioPCI', '0', 'ES1371 DAC2/ADC')]
(21:04:31) [0x1969b90] [InputVolumeProcess.stop] /usr/lib/rhythmbox/plugins/DRC/DRCUi.py:219: stoping volume monitoring
(21:04:31) [0x1969b90] [DRCDlg.getAlsaRecordHardwareString] /usr/lib/rhythmbox/plugins/DRC/DRCUi.py:714: alsa input device : hw:0,0

running via rhythmbox -d I see this:

(21:00:02) [0x8ac630] [DeserializeMember] /usr/lib/rhythmbox/plugins/DRC/XMLSerializer.py:144: Deserializing : 
(21:00:02) [0x8ac630] [DeserializeClass] /usr/lib/rhythmbox/plugins/DRC/XMLSerializer.py:166: Deserializing : sweepDuration : 
(21:00:02) [0x8ac630] [DeserializeClass] /usr/lib/rhythmbox/plugins/DRC/XMLSerializer.py:167: 40
(21:00:02) [0x8ac630] [DeserializeMember] /usr/lib/rhythmbox/plugins/DRC/XMLSerializer.py:144: Deserializing : 
(21:00:02) [0x8ac630] [find_plugin_file] /usr/lib/rhythmbox/plugins/rb/rb.py:156: looking for DRCUI.glade in /usr/share/rhythmbox/plugins/DRC

(rhythmbox:10529): Gtk-WARNING **: gtk_file_chooser_button_set_property: Choosers of type `GtkFileChooserButton' do not support `GTK_FILE_CHOOSER_ACTION_SAVE'.

(rhythmbox:10529): Gtk-CRITICAL **: gtk_radio_button_set_group: assertion '!g_slist_find (group, radio_button)' failed
(21:00:02) [0x8ac630] [getDeviceListFromAlsaOutput] /usr/lib/rhythmbox/plugins/DRC/DRCUi.py:317: found pattern : [('0', 'Ensoniq AudioPCI', '0', 'ES1371 DAC2/ADC'), ('0', 'Ensoniq AudioPCI', '1', 'ES1371 DAC1')]
(21:00:02) [0x8ac630] [getDeviceListFromAlsaOutput] /usr/lib/rhythmbox/plugins/DRC/DRCUi.py:317: found pattern : [('0', 'Ensoniq AudioPCI', '0', 'ES1371 DAC2/ADC')]
(21:00:02) [0x8ac630] [InputVolumeProcess.stop] /usr/lib/rhythmbox/plugins/DRC/DRCUi.py:219: stoping volume monitoring
(21:00:02) [0x8ac630] [DRCDlg.getAlsaRecordHardwareString] /usr/lib/rhythmbox/plugins/DRC/DRCUi.py:714: alsa input device : hw:0,0
(21:00:32) [0xe3c870] [electromagnetic_shotgun] rb-metadata-dbus-service.c:176: shutting down (45s idle)

TheBigW commented 9 years ago

mhh sounds not like I would solve in some minutes (quitting for today)... Can you tell me on which distribution you tested? I tested on Ubuntu 14.04 and 15.04. I assume it is some GTK incompatibility in my provided .glade file... There is just one place where I use radio buttons so at least this shall be fast :)

fossfreedom commented 9 years ago

its ubuntu 14.04 running Unity in virtualbox

TheBigW commented 9 years ago

strange that this never was hanging form me. But it was good for something: I did some cleanup and looks all a bit better now during start up. The least this will do is to give a bit more info about why it would hang as the volume monitoring got removed. Can you please try again with latest main sources?

fossfreedom commented 9 years ago
dad:~/.../plugins/DRC$rhythmbox -D DRC

(rhythmbox:14211): Gtk-CRITICAL **: gtk_css_provider_load_from_path: assertion 'path != NULL' failed

(rhythmbox:14211): Gtk-CRITICAL **: gtk_box_pack: assertion 'gtk_widget_get_parent (child) == NULL' failed
(22:37:35) [0x2190b90] [LoadAudioFile] DRCFileTool.py:331: ext = 
(22:37:35) [0x2190b90] [LoadRawFile] DRCFileTool.py:251: numChanels : 
(22:37:35) [0x2190b90] [LoadRawFile] DRCFileTool.py:251:  
(22:37:35) [0x2190b90] [LoadRawFile] DRCFileTool.py:251: 1
(22:37:35) [0x2190b90] [DRCPlugin.updateFilter] DRC.py:134: error updating filter
(22:37:35) [0x2190b90] [DRCPlugin.updateFilter] DRC.py:134:  
(22:37:35) [0x2190b90] [DRCPlugin.updateFilter] DRC.py:134: <class 'FileNotFoundError'>
(22:37:35) [0x2190b90] [DRCPlugin.updateFilter] DRC.py:134:  
(22:37:35) [0x2190b90] [DRCPlugin.updateFilter] DRC.py:134: <class 'FileNotFoundError'>
(22:37:35) [0x2190b90] [DRCPlugin.updateFilter] DRC.py:134:  
(22:37:35) [0x2190b90] [DRCPlugin.updateFilter] DRC.py:134: [Errno 2] No such file or directory: 'None'
(22:37:35) [0x2190b90] [DRCPlugin.add_ui] DRC.py:204: starting add_ui
(22:37:35) [0x2190b90] [DRCPlugin.add_ui] DRC.py:212: add_ui done
(22:37:40) [0x2190b90] [DRCDlg.show_ui] DRCUi.py:1015: showing UI

(rhythmbox:14211): Gtk-WARNING **: gtk_file_chooser_button_set_property: Choosers of type `GtkFileChooserButton' do not support `GTK_FILE_CHOOSER_ACTION_SAVE'.

(rhythmbox:14211): Gtk-CRITICAL **: gtk_radio_button_set_group: assertion '!g_slist_find (group, radio_button)' failed
(22:37:40) [0x2190b90] [getDeviceListFromAlsaOutput] DRCUi.py:317: found pattern : [('0', 'Ensoniq AudioPCI', '0', 'ES1371 DAC2/ADC'), ('0', 'Ensoniq AudioPCI', '1', 'ES1371 DAC1')]
(22:37:40) [0x2190b90] [getDeviceListFromAlsaOutput] DRCUi.py:317: found pattern : [('0', 'Ensoniq AudioPCI', '0', 'ES1371 DAC2/ADC')]
(22:37:40) [0x2190b90] [DRCDlg.getAlsaRecordHardwareString] DRCUi.py:730: alsa input device : hw:0,0

I presume some-sort of dialog is supposed to appear - I dont see it though. Certainly doesnt get down to the "print( "done showing UI" )" statement.

EDIT:

debugging - gets stuck at this line in getrecodingdeviceinfo

out, err = p.communicate()

TheBigW commented 9 years ago

ok, another proof to better RTFM... Seems it just worked by accident initially!!! No idea why or how it worked for me at all!!! The parameters for the subproces.Popen were completely wrong it seems (must admit I just blindly trusted and copied somewhere... and stopped in the "it works" state). Fixed it now + introduced some more debug output - in case this was still not the issue.

remind me to do some more testing this weekend. It shall not affect other functionality. I fixed this handling in multiple places now.

fossfreedom commented 9 years ago

hmm - no joy:

(23:33:22) [0x888b90] [DRCPlugin.updateFilter] DRC.py:134:  
(23:33:22) [0x888b90] [DRCPlugin.updateFilter] DRC.py:134: [Errno 2] No such file or directory: 'None'
(23:33:22) [0x888b90] [DRCPlugin.add_ui] DRC.py:204: starting add_ui
(23:33:22) [0x888b90] [DRCPlugin.add_ui] DRC.py:212: add_ui done

(rhythmbox:15818): Gtk-CRITICAL **: gtk_size_group_remove_widget: assertion 'g_slist_find (priv->widgets, widget)' failed

(rhythmbox:15818): Gtk-CRITICAL **: gtk_size_group_remove_widget: assertion 'g_slist_find (priv->widgets, widget)' failed
(23:33:27) [0x888b90] [DRCDlg.show_ui] DRCUi.py:1019: showing UI

(rhythmbox:15818): Gtk-WARNING **: gtk_file_chooser_button_set_property: Choosers of type `GtkFileChooserButton' do not support `GTK_FILE_CHOOSER_ACTION_SAVE'.

(rhythmbox:15818): Gtk-CRITICAL **: gtk_radio_button_set_group: assertion '!g_slist_find (group, radio_button)' failed
(23:33:27) [0x888b90] [getDeviceListFromAlsaOutput] DRCUi.py:317: found pattern : [('0', 'Ensoniq AudioPCI', '0', 'ES1371 DAC2/ADC'), ('0', 'Ensoniq AudioPCI', '1', 'ES1371 DAC1')]
(23:33:27) [0x888b90] [getDeviceListFromAlsaOutput] DRCUi.py:317: found pattern : [('0', 'Ensoniq AudioPCI', '0', 'ES1371 DAC2/ADC')]
(23:33:27) [0x888b90] [DRCDlg.getAlsaRecordHardwareString] DRCUi.py:734: alsa input device : hw:0,0
(23:33:27) [0x888b90] [DRCDlg.getRecordingDeviceInfo] DRCUi.py:508: executing: ['arecord', '-D', 'hw:0,0', '--dump-hw-params']

so I ran arecord -D hw:0,0 --dump-hw-params

and this began with some tracing and then scrolled to a black screen and didnt return until I killed the process:

dad:~/.../plugins/DRC$arecord -D hw:0,0 --dump-hw-params
Recording WAVE 'stdin' : Unsigned 8 bit, Rate 8000 Hz, Mono
HW Params of device "hw:0,0":
--------------------
ACCESS:  MMAP_INTERLEAVED RW_INTERLEAVED
FORMAT:  U8 S16_LE
SUBFORMAT:  STD
SAMPLE_BITS: [8 16]
FRAME_BITS: [8 32]
CHANNELS: [1 2]
RATE: [4000 48000]
PERIOD_TIME: (333 16384000]
PERIOD_SIZE: [16 65536]
PERIOD_BYTES: [64 131072]
PERIODS: [1 1024]
BUFFER_TIME: (333 16384000]
BUFFER_SIZE: [16 65536]
BUFFER_BYTES: [64 65536]
TICK_TIME: ALL
--------------------
RIFF$�WAVEfmt @@data�                                                      
fossfreedom commented 9 years ago

think this may be the issue - you probably need a test .wav file

TheBigW commented 9 years ago

cool, so now we have a way to reproduce without the need of blindly changing in my code :). I discovered a nice parameter which sounded like it could do what we need:

arecord -D hw:0,0 --dump-hw-params -q

that seems not to start a temporary recording... Ok, can't really tell whether it fixes the hanging as even without -q it worked for me... Could you please try?

fossfreedom commented 9 years ago

-q didnt do anything

however "-d 1" returned back to a prompt after 1 second.

TheBigW commented 9 years ago

ok, added it now with additional "-d 1". Works for me - which seems not to mean much.... Curious to hear ... hopefully not just where it hangs next :) ....

fossfreedom commented 9 years ago

moving forward:

line 292 you need to comment out/remove "mode = recDeviceInfo[1][0]" because it throws an subscript error because no "mode" was extracted

  • looks like there is 16bit mode in my vmware player version of ubuntu - S16LE but your mode pattern doesnt extract that:
(22:38:32) [0x1c61040] [DRCDlg.getRecordingDeviceInfo] DRCUi.py:511: hw infos : err : b'Recording WAVE \'stdin\' : Unsigned 8 bit, Rate 8000 Hz, Mono\nHW Params of device "hw:0,0":\n--------------------\nACCESS:  MMAP_INTERLEAVED RW_INTERLEAVED\nFORMAT:  U8 S16_LE\nSUBFORMAT:  STD\nSAMPLE_BITS: [8 16]\nFRAME_BITS: [8 32]\nCHANNELS: [1 2]\nRATE: [4000 48000]\nPERIOD_TIME: (333 16384000]\nPERIOD_SIZE: [16 65536]\nPERIOD_BYTES: [64 131072]\nPERIODS: [1 1024]\nBUFFER_TIME: (333 16384000]\nBUFFER_SIZE: [16 65536]\nBUFFER_BYTES: [64 65536]\nTICK_TIME: ALL\n--------------------\n' out : b'RIFFd\x1f\x00\x00WAVEfmt \x10\x00\x00\x00\x01\x00\x01\x00@\x1f\x00\x00@\x1f\x00\x00\x01\x00\x08\x00data@\x1f\x00\x00\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t"
(22:38:32) [0x1c61040] [DRCDlg.getRecordingDeviceInfo] DRCUi.py:524: numChannels : ['1', '2']
(22:38:32) [0x1c61040] [DRCDlg.getRecordingDeviceInfo] DRCUi.py:525: supportedModes : []
(22:38:32) [0x1c61040] [DRCDlg.getRecordingDeviceInfo] DRCUi.py:526: No. supported Modes : 0
(22:38:32) [0x1c61040] [DRCDlg.updateRecDeviceInfo] DRCUi.py:575: [['1', '2'], []]
TheBigW commented 9 years ago

added some better error handling now for that case. And additionally also improved the audio format parsing to a more generic way. Fortunately you pasted your output above - some more data points :)