MycroftAI / hardware-mycroft-mark-II

Mycroft's Mark II Rpi mechanical, electrical and industrial designs
110 stars 32 forks source link

Mycroft lost control of playing stream under specific circumstances #65

Open ChanceNCounter opened 3 years ago

ChanceNCounter commented 3 years ago

A few minutes ago, while testing which skills would capture certain requests, I did the following:

At this point, the first station started playing, but Mycroft doesn't seem to be in control of the player. It isn't displaying the media player screen, and "stop playback" doesn't work. I'm having trouble even finding the process to kill it.

ChanceNCounter commented 3 years ago

Stopping and starting Mycroft did the trick, so at least we know it was still session-bound XD

krisgesling commented 3 years ago

If I'm understanding the scenario correctly, I believe this comes back to the need for a more integrated audio and playback service. Spec doc in progress here: https://docs.google.com/document/d/1ebS60QLna4_AOQxQYpoaZrpkBzPXjL-7VFPJ7-xVvIQ/edit?usp=sharing

Currently there's different ways that audio can be output, and mycroft-core is not necessarily aware of when that happens which I think is an issue.

Which Skill was this in particular?

ChanceNCounter commented 3 years ago

Off the top of my head, I'm not sure, except that it must have been one of johnbart's radio skills, because I was fussing with how to trigger a couple local stations and their inconsistent keywords.

I'll poke through logs tomorrow, see if I can find it by keyword, but I'm not hopeful.

ChanceNCounter commented 3 years ago

Alright. It looks like the IHeartRadio skill tied for, was selected for, and processed "play KEXP" at 19:37:27, and was also chosen from a tie for "710 ESPN" at 19:37:43.

The skill then attempted to do this, several times:

self.gui["previous1Title"] = trackHistory_obj["data"][0]["title"]

and gets IndexError: list index out of range

Hopefully soon I'll get the opportunity to paste more of the traceback - uncooperative multiplexer on this machine - but it's all just the skill working its way up to that call.

On the one hand, unlisted skill 🤷‍♂️ but, on the other hand, it clearly comes back to trying to interact with Mycroft's "now playing" features while they're still processing a previous request.

I think the discovery here may be the need for some kind of lock and queue on that stuff.