* alsa pcm jack plugin
@ 2006-01-08 19:44 Florian Schmidt
0 siblings, 0 replies; 3+ messages in thread
From: Florian Schmidt @ 2006-01-08 19:44 UTC (permalink / raw)
Cc: alsa-devel
Please reply to alsa-devel only (it is open to nonsubscribers), i
crossposted to get the attention of everybody who might be able to shed
light on this issue [or even be able to fix it].
Hi,
i've seen some reports on #lad (irc.freenode.org) about how the alsa pcm
jack plugin (pcm_jack from now on) fails to work with some (most)
applications. The two cases i know about from my own experience are:
- xmms
- ninjam
They fail in slightly different ways though. For reference, you find my
relevant .asoundrc excerpt at the bottom of this mail.
xmms simlpy doesn't start playback when using the jackplug device (well,
it seems it wants to, but its clock simply stays at 00:00). Jack seems
to stay functional though.
With ninjam, it is possible to actually get some audio from it (for
about 10 seconds), then it goes silent/frozen and jack's watchdog kicks
it out after the timeout time has expired. And jackd is taken down with
it, too :(
20:28:08.662 Audio connection graph change.
20:28:08.842 Audio connection change.
subgraph starting at alsaP.26465.1 timed out (subgraph_wait_fd=20, status = 0, state = Finished)
**** alsa_pcm: xrun of at least 1.018 msecs
jackd watchdog: timeout - killing jackd
zombified - calling shutdown handler
20:28:20.839 Shutdown notification.
20:28:20.842 Client deactivated.
20:28:20.849 JACK is stopping...
cannot send request type 7 to server
cannot read result for request type 7 from server (Broken pipe)
cannot send request type 7 to server
cannot read result for request type 7 from server (Broken pipe)
20:28:21.092 JACK was stopped successfully.
This implies to me, that the pcm_jack process callback must have blocked
(a big NO-NO which the jack api docs clearly state :)).
I took a small look at the source code (pasted here:
http://rafb.net/paste/results/W8tJPa63.html for reference (non permanent
link)) and i found:
write(jack->fd, buf, 1); /* for polling */
(snd_pcm_jack_process_cb(), line 144 in pcm/jack/pcm_jack.c)
write() is a potentially blocking system call. I don't know the details
well enough to judge whether this is a problem here.
Besides that write() call there's some alsa_lib calls, too, of which i
don't know whether they potentially block. Namely:
snd_pcm_area_silence
snd_pcm_area_copy
snd_pcm_ioplug_mmap_areas
I wonder whether cleanly designed this thing would need to have to use
an alsa lib calls in the process callback at all. And most of all the
write() should be avoided, too. Shouldn't all communication with the
pcm_jack's process callback be done via lockless ringbufffers/condition
variables?
Or am i misunderstanding the problem here completely? someone might add
some explanatory words on how the code is supposed to work?
Thanks for all insights,
Flo
~/.asoundrc:
pcm.jackplug {
type plug
slave { pcm "jack" }
}
ctl.jackplug {
type hw
card 0
}
pcm.jack {
type jack
playback_ports {
0 alsa_pcm:playback_1
1 alsa_pcm:playback_2
}
capture_ports {
0 alsa_pcm:capture_1
1 alsa_pcm:capture_2
}
}
--
Palimm Palimm!
http://tapas.affenbande.org
-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: alsa pcm jack plugin
[not found] <20060108204454.511ad978@mango.fruits.de>
@ 2006-01-10 17:23 ` Takashi Iwai
2006-01-10 19:29 ` Florian Schmidt
0 siblings, 1 reply; 3+ messages in thread
From: Takashi Iwai @ 2006-01-10 17:23 UTC (permalink / raw)
To: alsa-devel
At Sun, 8 Jan 2006 20:44:54 +0100,
Florian Schmidt wrote:
>
>
> Please reply to alsa-devel only (it is open to nonsubscribers), i
> crossposted to get the attention of everybody who might be able to shed
> light on this issue [or even be able to fix it].
>
> Hi,
>
> i've seen some reports on #lad (irc.freenode.org) about how the alsa pcm
> jack plugin (pcm_jack from now on) fails to work with some (most)
> applications. The two cases i know about from my own experience are:
>
> - xmms
>
> - ninjam
>
> They fail in slightly different ways though. For reference, you find my
> relevant .asoundrc excerpt at the bottom of this mail.
>
> xmms simlpy doesn't start playback when using the jackplug device (well,
> it seems it wants to, but its clock simply stays at 00:00). Jack seems
> to stay functional though.
>
> With ninjam, it is possible to actually get some audio from it (for
> about 10 seconds), then it goes silent/frozen and jack's watchdog kicks
> it out after the timeout time has expired. And jackd is taken down with
> it, too :(
Any chance to get strace at the stalling position?
> I took a small look at the source code (pasted here:
> http://rafb.net/paste/results/W8tJPa63.html for reference (non permanent
> link)) and i found:
>
> write(jack->fd, buf, 1); /* for polling */
>
> (snd_pcm_jack_process_cb(), line 144 in pcm/jack/pcm_jack.c)
>
> write() is a potentially blocking system call. I don't know the details
> well enough to judge whether this is a problem here.
>
> Besides that write() call there's some alsa_lib calls, too, of which i
> don't know whether they potentially block. Namely:
>
> snd_pcm_area_silence
> snd_pcm_area_copy
> snd_pcm_ioplug_mmap_areas
They are likely innocent, irrelevant with i/o tasks.
> I wonder whether cleanly designed this thing would need to have to use
> an alsa lib calls in the process callback at all. And most of all the
> write() should be avoided, too. Shouldn't all communication with the
> pcm_jack's process callback be done via lockless ringbufffers/condition
> variables?
Maybe. The write() there is used just for a poll notification and
wake-up of the caller of poll. So, basically we don't need even a
buffer, but a single condition variable and a simple sleep/wake-up
mechanism for multi threads.
Takashi
-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: alsa pcm jack plugin
2006-01-10 17:23 ` alsa pcm jack plugin Takashi Iwai
@ 2006-01-10 19:29 ` Florian Schmidt
0 siblings, 0 replies; 3+ messages in thread
From: Florian Schmidt @ 2006-01-10 19:29 UTC (permalink / raw)
To: Takashi Iwai; +Cc: alsa-devel
On Tue, 10 Jan 2006 18:23:35 +0100
Takashi Iwai <tiwai@suse.de> wrote:
Hi Takashi,
sorry for the late reply. I didn't see this mail turn up on the LAD ML,
so i figured it got lost completely.
> > xmms simlpy doesn't start playback when using the jackplug device (well,
> > it seems it wants to, but its clock simply stays at 00:00). Jack seems
> > to stay functional though.
xmms seems to be in some sort of loop, which looks a bit like this
(repeating over and over):
gettimeofday({1136920429, 546991}, NULL) = 0
gettimeofday({1136920429, 547282}, NULL) = 0
gettimeofday({1136920429, 547424}, NULL) = 0
write(3, "\224\3\n\0\37\0\340\2>\0\340\2\0\6@\0P\1\0\0L\0\20\0\30"..., 88) = 88
read(3, 0xbfc5cc70, 32) = -1 EAGAIN (Resource temporarily unavai
lable)
select(4, [3], NULL, NULL, NULL) = 1 (in [3])
read(3, "\1\1j$\0\0\0\0\"\0`\1\4\0\0\0\0\0\0\0\20\"\22\21\310\316"..., 32) = 32
gettimeofday({1136920429, 548535}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 8
) = 0
gettimeofday({1136920429, 557975}, NULL) = 0
gettimeofday({1136920429, 558473}, NULL) = 0
gettimeofday({1136920429, 558937}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 7
) = 0
gettimeofday({1136920429, 567853}, NULL) = 0
gettimeofday({1136920429, 568483}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 0
) = 0
gettimeofday({1136920429, 569815}, NULL) = 0
gettimeofday({1136920429, 570183}, NULL) = 0
write(3, "\224\3\n\0\37\0\340\2>\0\340\2\0\6@\0\240\1\0\0L\0\20\0"..., 88) = 88
read(3, "\1\1n$\0\0\0\0\"\0`\1\4\0\0\0\0\0\0\0$\"\22\21\310\316"..., 32) = 32
gettimeofday({1136920429, 571764}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 6
) = 0
gettimeofday({1136920429, 579972}, NULL) = 0
gettimeofday({1136920429, 580464}, NULL) = 0
read(13, 0xbfc5cbd0, 72) = -1 EAGAIN (Resource temporarily unavai
lable)
gettimeofday({1136920429, 581452}, NULL) = 0
gettimeofday({1136920429, 581885}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 8
) = 0
gettimeofday({1136920429, 591941}, NULL) = 0
gettimeofday({1136920429, 592410}, NULL) = 0
gettimeofday({1136920429, 592778}, NULL) = 0
gettimeofday({1136920429, 593334}, NULL) = 0
write(3, "\224\3\n\0\37\0\340\2>\0\340\2\0\6@\0\0\1\20\0L\0\20\0"..., 40) = 40
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 4
) = 0
gettimeofday({1136920429, 599691}, NULL) = 0
gettimeofday({1136920429, 600068}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 1
) = 0
gettimeofday({1136920429, 602685}, NULL) = 0
gettimeofday({1136920429, 603117}, NULL) = 0
write(3, ">\3\7\0\223\0\340\2\35\0\340\2>\0\340\2\6\0\0\0p\0\33\0"..., 48) = 48
read(3, "\1\1r$\0\0\0\0\"\0`\1\4\0\0\0\0\0\0\0L\"\22\21\310\316"..., 32) = 32
gettimeofday({1136920429, 604513}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 8
) = 0
gettimeofday({1136920429, 614844}, NULL) = 0
gettimeofday({1136920429, 615309}, NULL) = 0
gettimeofday({1136920429, 615681}, NULL) = 0
gettimeofday({1136920429, 616221}, NULL) = 0
write(3, "\224\3\n\0\37\0\340\2>\0\340\2\0\6@\0P\1\20\0L\0\20\0\30"..., 40) = 40
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 8
) = 0
gettimeofday({1136920429, 626719}, NULL) = 0
gettimeofday({1136920429, 627157}, NULL) = 0
gettimeofday({1136920429, 627621}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 2
) = 0
gettimeofday({1136920429, 631692}, NULL) = 0
gettimeofday({1136920429, 631889}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 4
) = 0
gettimeofday({1136920429, 636651}, NULL) = 0
gettimeofday({1136920429, 637022}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 0
) = 0
gettimeofday({1136920429, 638675}, NULL) = 0
gettimeofday({1136920429, 639043}, NULL) = 0
write(3, "\224\3\n\0\37\0\340\2>\0\340\2\0\6@\0\240\1\20\0L\0\20"..., 88) = 88
read(3, "\1\1w$\0\0\0\0\"\0`\1\4\0\0\0\0\0\0\0`\"\22\21\310\316"..., 32) = 32
gettimeofday({1136920429, 640595}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 6
) = 0
gettimeofday({1136920429, 648696}, NULL) = 0
gettimeofday({1136920429, 649209}, NULL) = 0
gettimeofday({1136920429, 649680}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 9
) = 0
gettimeofday({1136920429, 660689}, NULL) = 0
gettimeofday({1136920429, 661201}, NULL) = 0
gettimeofday({1136920429, 661591}, NULL) = 0
gettimeofday({1136920429, 662125}, NULL) = 0
write(3, "\224\3\n\0\37\0\340\2>\0\340\2\0\6@\0\0\1 \0L\0\20\0\30"..., 40) = 40
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 0
) = 0
gettimeofday({1136920429, 663890}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 6
) = 0
gettimeofday({1136920429, 671725}, NULL) = 0
gettimeofday({1136920429, 672160}, NULL) = 0
write(3, ">\3\7\0\223\0\340\2\35\0\340\2>\0\340\2\10\0\0\0p\0\33"..., 48) = 48
read(3, "\1\1{$\0\0\0\0\"\0`\1\4\0\0\0\0\0\0\0\210\"\22\21\310\316"..., 32) = 32
gettimeofday({1136920429, 673671}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 8
) = 0
gettimeofday({1136920429, 683819}, NULL) = 0
gettimeofday({1136920429, 684354}, NULL) = 0
gettimeofday({1136920429, 685130}, NULL) = 0
gettimeofday({1136920429, 685735}, NULL) = 0
write(3, "\224\3\n\0\37\0\340\2>\0\340\2\0\6@\0P\1 \0L\0\20\0\30"..., 40) = 40
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 6
) = 0
gettimeofday({1136920429, 693693}, NULL) = 0
gettimeofday({1136920429, 694071}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 0
) = 0
gettimeofday({1136920429, 695391}, NULL) = 0
write(3, ">\3\7\0\223\0\340\2\35\0\340\2>\0\340\2\t\0\0\0p\0\33\0"..., 48) = 48
read(3, "\1\1\177$\0\0\0\0\"\0`\1\4\0\0\0\0\0\0\0\234\"\22\21\310"..., 32) = 32
gettimeofday({1136920429, 696885}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 7
) = 0
gettimeofday({1136920429, 704646}, NULL) = 0
gettimeofday({1136920429, 705077}, NULL) = 0
gettimeofday({1136920429, 705467}, NULL) = 0
read(13, 0xbfc5cbd0, 72) = -1 EAGAIN (Resource temporarily unavai
lable)
gettimeofday({1136920429, 706463}, NULL) = 0
gettimeofday({1136920429, 706870}, NULL) = 0
write(3, "\224\3\n\0\37\0\340\2>\0\340\2\0\6@\0\240\1 \0L\0\20\0"..., 40) = 40
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 7
) = 0
gettimeofday({1136920429, 716654}, NULL) = 0
gettimeofday({1136920429, 717084}, NULL) = 0
gettimeofday({1136920429, 717749}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 5
) = 0
gettimeofday({1136920429, 724813}, NULL) = 0
gettimeofday({1136920429, 725203}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 1
) = 0
gettimeofday({1136920429, 727677}, NULL) = 0
gettimeofday({1136920429, 728107}, NULL) = 0
gettimeofday({1136920429, 728503}, NULL) = 0
write(3, "\224\3\n\0\37\0\340\2>\0\340\2\0\6@\0\0\0010\0L\0\20\0"..., 88) = 88
read(3, "\1\1\204$\0\0\0\0\"\0`\1\4\0\0\0\0\0\0\0\260\"\22\21\310"..., 32) = 32
gettimeofday({1136920429, 730106}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 7
) = 0
gettimeofday({1136920429, 738727}, NULL) = 0
gettimeofday({1136920429, 739371}, NULL) = 0
gettimeofday({1136920429, 739818}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 8
) = 0
gettimeofday({1136920429, 749631}, NULL) = 0
gettimeofday({1136920429, 750051}, NULL) = 0
gettimeofday({1136920429, 750438}, NULL) = 0
gettimeofday({1136920429, 750971}, NULL) = 0
write(3, "\224\3\n\0\37\0\340\2>\0\340\2\0\6@\0P\0010\0L\0\20\0\30"..., 40) = 40
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 3
) = 0
gettimeofday({1136920429, 756655}, NULL) = 0
gettimeofday({1136920429, 757034}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 2
) = 0
gettimeofday({1136920429, 760727}, NULL) = 0
gettimeofday({1136920429, 761164}, NULL) = 0
write(3, ">\3\7\0\223\0\340\2\35\0\340\2>\0\340\2\v\0\0\0p\0\33\0"..., 48) = 48
read(3, 0xbfc5cc70, 32) = -1 EAGAIN (Resource temporarily unavai
lable)
select(4, [3], NULL, NULL, NULL) = 1 (in [3])
read(3, "\1\1\210$\0\0\0\0\"\0`\1\4\0\0\0\0\0\0\0\330\"\22\21\310"..., 32) = 32
gettimeofday({1136920429, 762656}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 8
) = 0
gettimeofday({1136920429, 771656}, NULL) = 0
gettimeofday({1136920429, 772090}, NULL) = 0
gettimeofday({1136920429, 772475}, NULL) = 0
gettimeofday({1136920429, 773007}, NULL) = 0
write(3, "\224\3\n\0\37\0\340\2>\0\340\2\0\6@\0\240\0010\0L\0\20"..., 40) = 40
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 8
) = 0
gettimeofday({1136920429, 783937}, NULL) = 0
gettimeofday({1136920429, 784611}, NULL) = 0
gettimeofday({1136920429, 785288}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 1
) = 0
gettimeofday({1136920429, 787604}, NULL) = 0
gettimeofday({1136920429, 787976}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 5
) = 0
gettimeofday({1136920429, 794639}, NULL) = 0
gettimeofday({1136920429, 795069}, NULL) = 0
gettimeofday({1136920429, 795455}, NULL) = 0
write(3, "\224\3\n\0\37\0\340\2>\0\340\2\0\6@\0\0\2\0\0L\0\20\0\30"..., 88) = 88
read(3, "\1\1\215$\0\0\0\0\"\0`\1\4\0\0\0\0\0\0\0\354\"\22\21\310"..., 32) = 32
gettimeofday({1136920429, 796980}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 7
) = 0
gettimeofday({1136920429, 805779}, NULL) = 0
gettimeofday({1136920429, 806231}, NULL) = 0
gettimeofday({1136920429, 806679}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 3, 9
) = 0
gettimeofday({1136920429, 817654}, NULL) = 0
gettimeofday({1136920429, 818088}, NULL) = 0
gettimeofday({1136920429, 818473}, NULL) = 0
write(3, "\224\3\n\0\37\0\340\2>\0\340\2\0\6@\0P\2\0\0L\0\20\0\30"..., 88) = 88
read(3, "\1\1\221$\0\0\0\0\"\0`\1\4\0\0\0\0\0\0\0\0#\22\21\310\316"..., 32) = 32
gettimeofday({1136920429, 819992}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
poll( <unfinished ...>
Here i killed it..
~$
GLib-WARNING **: g_main_iterate(): main loop already active in another thread
GLib-WARNING **: g_main_iterate(): main loop already active in another thread
XS[src/xmms-sid.c:xs_close:235]: xs_close(): shutting down...
XS[src/xmms-sid.c:xs_stop:584]: STOP_REQ
XS[src/xmms-sid.c:xs_close:248]: shutdown finished.
GLib-WARNING **: g_main_iterate(): main loop already active in another thread
GLib-WARNING **: g_main_iterate(): main loop already active in another thread
GLib-WARNING **: g_main_iterate(): main loop already active in another thread
GLib-WARNING **: g_main_iterate(): main loop already active in another thread
GLib-WARNING **: g_main_iterate(): main loop already active in another thread
GLib-WARNING **: g_main_iterate(): main loop already active in another thread
> >
> > With ninjam, it is possible to actually get some audio from it (for
> > about 10 seconds), then it goes silent/frozen and jack's watchdog kicks
> > it out after the timeout time has expired. And jackd is taken down with
> > it, too :(
>
> Any chance to get strace at the stalling position?
I put the complete log file to
http://affenbande.org/~tapas/ninjam_strace
ca. 2.9M
I hope it helps any at all.. I ran ninjam like this:
strace -o log cursesclient/cninjam test.ninjam.com:2049 -audiostr "in jackplug out jackplug"
use username "anonymous" to log in. It seems to block on rt_sigaction
for a bit and then continues. Then blocks again, continues and after a
while it dies and takes jackd with it.
> > I wonder whether cleanly designed this thing would need to have to use
> > an alsa lib calls in the process callback at all. And most of all the
> > write() should be avoided, too. Shouldn't all communication with the
> > pcm_jack's process callback be done via lockless ringbufffers/condition
> > variables?
>
> Maybe. The write() there is used just for a poll notification and
> wake-up of the caller of poll. So, basically we don't need even a
> buffer, but a single condition variable and a simple sleep/wake-up
> mechanism for multi threads.
I see. Please excuse my implying of this thing not being cleanly
designed. I didn't understand the code at all really :)
Regards,
Flo
--
Palimm Palimm!
http://tapas.affenbande.org
-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2006-01-10 19:29 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20060108204454.511ad978@mango.fruits.de>
2006-01-10 17:23 ` alsa pcm jack plugin Takashi Iwai
2006-01-10 19:29 ` Florian Schmidt
2006-01-08 19:44 Florian Schmidt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox