my channel stopped working

WillowCreek Fellowship channel has just plain stopped working.
I get the splash screens on my 2XS, but then it freezes.
I have done nothing to change the channel via Roku.
I update the xml and images files on my server every week.
I don’t think it froze immediately after doing an update anyway.
I have tried side loading the original zip file but I get the error “Invalid Public Key”.
I know the password is correct because when I inspect the pkg file I get:
App Name: wcf_roku50/1.1
Dev ID: 93…59 (let me know if you need this number)
Creation Date:
dev.zip: c…7 (If you need this number, let me know)
I try to do a Rekey, but get the error: Invalid Public Key
I tried to do a minor update, but I think I got the same error. At this point I am bleary eyed. :cry:
Have any of the Channel store picture size requirements changed in the last couple of years?
I had a few picture dimensions slightly off and was going to correct them in the minor update.
My telnet debug screen had numerous entries which I am still trying to look at, but one in particular baffled me: Manifest does not exist in zip archive. Uhh, yes it does exist in the zip archive. Could my 2XS have a problem? My 2XS works on lots of other channels.
I note in the SDK docs (Channel Packaging and Publishing, Section 1.0 Intro to…) a reference to: https://owner.roku.com/Developer/Home/
I get an error page when I try to go there.
Thanks, Ray.

According to this old post, the “Invalid Public Key” error means you’re entering the wrong password: viewtopic.php?f=34&t=66075&p=422887&hilit=invalid+public+key#p422887

As for the “Manifest does not exist in zip archive” error, have you double-checked the zip file you’re uploading to ensure that the manifest is at the root? Is it possible you zipped it up one level higher than you should have?

Thanks for the reply.
I also read that post about the wrong password being the reason for the Invalid Public Key.
That is why I mentioned that I used the same password to Inspect the pkg file successfully.
I believe that means I have the correct password.
I also tried rekeying, but got the same error.

Regarding the Manifest file, here is a screenshot of the contents of the very same zip file I created my channel with.

Hmmmm, I guess the Img tag won’t embed the picture, so here is a link to that picture:
http://willowcreekfellowship.org/wcfroku50.jpg

If it will help and it is an OK idea, I will post the links to my xml files.

Make sure you zip from within the folder and not from the root - open the folder of your project, select all, and send to zip.

  • Joel

“wcfray” wrote:
My telnet debug screen had numerous entries which I am still trying to look at, but one in particular baffled me: Manifest does not exist in zip archive.
One thing at a time, @wcfray !
I get the impression there are multiple things here. If i understand correctly,
(a) you had published a channel (private or public), which stopped working and
(b) now that you try to re-publish it, you are getting some additional issues (manifest complains)
I understand you want to fix the channels but trying to address everything at once will just confuse the matters.

What firmware is your player running and when has it updated last?
You case might be similar to what i saw couple of months ago viewtopic.php?f=34&t=75717 - firmware added a function to /common/LibCore library that name-clashes with function of mine, which lead to published pvt channel not working in manner similar to what you saw.

One thing at a time, @wcfray!
Excellent point, as I don’t know. There might be multiple issues.
(a) you had published a channel (private or public), which stopped working and
I have a published public channel which stopped working.
(b) now that you try to re-publish it, you are getting some additional issues (manifest complains)
True, but via side loading. I have not gotten to the point of republishing because I can’t test the old original package.
I understand you want to fix the channels but trying to address everything at once will just confuse the matters.
I agree.
What firmware is your player running and when has it updated last?
Model number: 3100X (Roku2XS) (from Roku player, Settings | About)
Software version: 5.5 - build 410 (from Roku player, Settings | About)
Last updated: Aug 1 2:52 am (from Roku player, Settings | System Update)
Last checked: Jan 4 12:25 pm (from Roku player, Settings | System Update)
Min. Firmware v2.5 b388 (from https://owner.roku.com/Developer/Apps/Details/xxxxx)
I could not find a date specifically referring to Firmware.
viewtopic.php?f=34&t=75717
The date on that topic is close to 2 months before I started having my problem.

“RokuJoel” wrote:
Make sure you zip from within the folder and not from the root - open the folder of your project, select all, and send to zip.

The zip file is the same unmolested zip file I used about 22 months ago to first establish the channel. That is why I posted the contents with the date time stamps.

“wcfray” wrote:

viewtopic.php?f=34&t=75717
The date on that topic is close to 2 months before I started having my problem.
I did not say your problem was caused by the beta firmware discussed there. Rather i pointed unexpected ways exist, in which new firmwares may break working channels - one of which is a change in a Roku-provided file used with “library” statement.

Isn’t 5.5.410 a little old-ish, or is this the current fw for #3100, does someone know?
An idea on the side, Roku*: how about keeping a web-page or forum topic with list of all current firmware versions, per model? For easy reference when in doubt.

“EnTerr” wrote:

“wcfray” wrote:

viewtopic.php?f=34&t=75717
The date on that topic is close to 2 months before I started having my problem.
I did not say your problem was caused by the beta firmware discussed there. Rather i pointed unexpected ways exist, in which new firmwares may break working channels - one of which is a change in a Roku-provided file used with “library” statement.

Isn’t 5.5.410 a little old-ish, or is this the current fw for #3100, does someone know?
An idea on the side, Roku*: how about keeping a web-page or forum topic with list of all current firmware versions, per model? For easy reference when in doubt.

Sorry if my comment mislead you on my meaning. No snarkiness was intended. I really appreciate the feedback. I was trying to say that since my problem was more recent than that forum post that I did not think it was applicable. However, your comment makes sense. If Roku is changing things that break channels then there should be notice of some sort. In fact I wondered if I needed to find the notification webpage and get signed up. I am not a Roku expert (obviously still very much the learner).

I have limited time available to troubleshoot this right now, so my discoveries are slow to be coming. <grammar?>

I lost all that I typed because the forum logged me off. Argh. Partial reconstruction follows.

Partial mea culpa.
I found 1 missing quote in categories.xml
Fixing that has allowed me back into the channel, BUT there are other problems.
I can enter categories 1-4, but none after that.
Category 4’s image will not load.
The first entry under Category 4 shows the image that is supposed to be the image of Category 4 also.
This is normal. I always use the first image of a given category as the image of the category.
But in this case the image does not show as the Category 4 image.
The debug screen is showing a couple of errors:
Note: GC - Found 110 orphaned objects (objects in a circular ref loop).
and (partial excerpt of debug follows)
------ Running ------
created feed connection for http://willowcreekfellowship
url: http://willowcreekfellowship.org/roku/xml/categorie
Took: 148ms
Parse Took: 3ms
begin category node parsing
number of categories: 10
ParseCategoryNode: category
category: Sermons: Easter | 2012-2014
categoryLeaf: 2012-2014
ParseCategoryNode: categoryLeaf
BRIGHTSCRIPT: ERROR: Runtime: FOR EACH value is Invalid
added new child node
ParseCategoryNode: category
category: Sermons: Mother’s/Father’s Days | 2012-2014
categoryLeaf: 2012-2014
ParseCategoryNode: categoryLeaf
BRIGHTSCRIPT: ERROR: Runtime: FOR EACH value is Invalid
added new child node
ParseCategoryNode: category
category: Sermons: Advent | 2012-2014
categoryLeaf: 2012-2014
ParseCategoryNode: categoryLeaf
BRIGHTSCRIPT: ERROR: Runtime: FOR EACH value is Invalid
added new child node
ParseCategoryNode: category
category: Sermons: Who Is Your God? | Current Series
categoryLeaf: Current Series [2015]
ParseCategoryNode: categoryLeaf
BRIGHTSCRIPT: ERROR: Runtime: FOR EACH value is Invalid
added new child node

“wcfray” wrote:
I can enter categories 1-4, but none after that.

Because the feed requests for the others are 404ing? http://willowcreekfellowship.org/roku/x … er2014.xml

In addition to what RokuChris said (the main reason), see this:

“wcfray” wrote:
------ Running ------

ParseCategoryNode: categoryLeaf
BRIGHTSCRIPT: ERROR: Runtime: FOR EACH value is Invalid
Contrary to what it says in all-caps, that is not an ERROR per se - it does not stop the program. It is just a Warning message which runtime prints but it flags an issue nevertheless. Many devs will ignore it since, well - channel seems to continue working, hobbled as it may be. A case can be made that it should be a proper fatal error, to stop the channel at the right place but i also see the RokuCo need to maintain backwards compatibility (quirks and bugs included). They have actually done a big, big effort keeping the apparent boxing and “String” vs “roString” behaviors from BrightScript 2 into BrightScript 3.

What the diagnostic message means is: you have somewhere in your code a “FOR EACH someVar IN someEnumerable” loop, where the value of someEnumerable is not really enumerable (array or list or dictionary). In your case it is instead Invalid, which very, very commonly is the result of trying to “dot-access” a non-existing element (either a node of roXml or a member of a dictionary).

Finally. I want to thank everyone for their contribution. It was all so professional. Ultimately I can only conclude that I did something in 1 xml file that started an unfortunate chain of events. The result of that one missing quote kinda sorta paniced me. I started making ‘fixes’. When I thought I was onto ‘the’ fix, I just tore through my xml files, almost without abandon. But I did not test each step as I made the changes. My bad. Nothing was working. As I shared bits of what I was doing on the forum I gained much needed insight into what I needed to do. That led to a more careful plodding through my xml files. The first real fix allowed me to side load the channel, which allowed for testing, so that part was crucial. I started from the beginning with basic xml files. I mostly ended up rewriting most of my xml files, testing as I went along. It was a slog, but worth the lessons learned. One of which is to keep a good set of backup files. Again, my thanks to the forum members for their patience with my floundering about.

Of my two remaining issues, one was well addressed by EnTerr in the last message, especially his reference to another post about the Brightscipt fatal vs nonfatal error messages. I am a purist wannabe so I understand the desire for the fatal error, but I don’t get paid, so in my practical world I am extremely thankful for those being nonfatal. I still want to fix them so I agree wholeheartedly that a pointer to where those errors are occurring would be wonderful.

The last issue is a “Note: GC - Found 112 orphaned objects (objects in a circular ref loop).” I also want to take care of the dizzy orphans. I don’t like to just always ask for help unless I have done due diligence in looking for an answer myself, but, boy am I tired, so if anyone has any pity for me…

“wcfray” wrote:
The last issue is a “Note: GC - Found 112 orphaned objects (objects in a circular ref loop).” I also want to take care of the dizzy orphans.
If you’re seeing this when exiting the channel with the Home button, you’re probably OK. Because Home kills the app without giving you an opportunity to clean up, orphans are usually expected. If you’re seeing this when you exit with the Back button, then it could be a little harder to find them.

I am seeing the Note message in the debug screen when I enter the channel.

“wcfray” wrote:
I am seeing the Note message in the debug screen when I enter the channel.
That note is when you exit the channel. If you’re seeing it at the beginning, then it’s most likely the previous instance of your app being killed when you sideload the new version.

“wcfray” wrote:
The last issue is a “Note: GC - Found 112 orphaned objects (objects in a circular ref loop).” I also want to take care of the dizzy orphans. I don’t like to just always ask for help unless I have done due diligence in looking for an answer myself, but, boy am I tired, so if anyone has any pity for me…
Don’t worry about it!
When you start seeing 100x more orphans, come back and we can ponder over it. That message just means that during routine cleanup the “janitor” (garbage collector) has found some memory that should have been free but it wasn’t. It takes care of it; in particular memory gets flushed every time channel start/exits (that’s when GC mumbles to itself “Found 112 orphaned objects”), so no worries. Very easy to reproduce (intentionally):

BrightScript Debugger> gc
total number of current bscs: 41
number of root bscs: 12
number of orphaned bscs: 0
BrightScript Debugger> loop = { }
BrightScript Debugger> loop.loop = loop
BrightScript Debugger> loop = invalid
BrightScript Debugger> gc
total number of current bscs: 42
number of root bscs: 12
number of orphaned bscs: 1      '<<< Woot! we orphaned one, the ex-content of `loop`

The “FOR EACH value is Invalid” diagnostic is much more important to your case, since no way it intended it that way (which i can tell since you don’t know where it comes from :slightly_smiling_face: ). If you can live with it, orphans are much less of a concern.

Don’t worry about it! When you start seeing 100x more orphans, come back and we can ponder over it.
Got it. worrying P.S. NOW I know what the GC stands for, and it is apparently not General Compiler?

(which i can tell since you don’t know where it comes from :slightly_smiling_face: )
True, but a previously referenced post (from an ostensibly more knowledgeable forum member) also complained that the error message does not tell you where the error was found. I could probably be accurately described as script kiddie, as I am using modified scripts from Roku. I admit that slogging through the sdkdocs can be overwhelming to me. I do try though, and will continue to do so. Since I have not written my own scripts, then is it not reasonable to presume that those errors might be coming from those ever so slightly modified, but canned scripts?

Note: No disrespect of any kind is meant in anything I have to say. If you took my meaning in the worst possible way, then you took my meaning all wrong. No undercurrent either. I have been impressed with the tone of this forum and I hope to be able to continue to participate and learn. I try to use emoticons sparingly because even they can be misconstrued.

“wcfray” wrote:
Got it. P.S. NOW I know what the GC stands for, and it is apparently not General Compiler?
Right. It ain’t MajGen. Failure either :slightly_smiling_face:
It’s just the “lowly” janitor that cleans the office and you may hear them grumbling that we throw too much trash on the floor instead of the trash cans. Make no mistake, GC’s role is important and makes our lives easier - instead of say “C/C++ Corp” offices where everybody at all times should use the recycling bin (or else after a few days they’d run out of office space and halt). It also makes sense to review the code if GC has to spend too much time cleaning said “orphans”. But a few droppings… meh.

(which i can tell since you don’t know where it comes from :slightly_smiling_face: )True, but a previously referenced post (from an ostensibly more knowledgeable forum member) also complained that the error message does not tell you where the error was found. I could probably be accurately described as script kiddie, as I am using modified scripts from Roku. I admit that slogging through the sdkdocs can be overwhelming to me. I do try though, and will continue to do so. Since I have not written my own scripts, then is it not reasonable to presume that those errors might be coming from those ever so slightly modified, but canned scripts?
No worries, that was not critique of you but just an observation. Was pointing out it was not something you planned/intended, like “i won’t check for invalid here because i know FOR EACH will skip on invalid” - or you would have known where you made such decision. You likely inherited the not-checking-for-invalid-after-using-some-roXML-API from some example script, sure.

Now regarding why Warning messages like this cannot show the source line#, see RokuKC’s “but not as easy as you might think.” I can extrapolate (speculate) on that, probably the VM handles a proper Error with a C++ throw that un-winds the stack and when catch-ed upstream, the source script context (incl. line#) is available - but when down-in-the-trenches printing a “not-fatal error” (aka Warning) like this and continuing execution, line# is not known.

Note: No disrespect of any kind is meant in anything I have to say. If you took my meaning in the worst possible way, then you took my meaning all wrong. No undercurrent either. I have been impressed with the tone of this forum and I hope to be able to continue to participate and learn. I try to use emoticons sparingly because even they can be misconstrued.
Mmm? I am confused here. I had no issue with anything you have said, the point i was trying to make was that if i were to worry about something, orphan instances would me buch further down my list than “FOR EACH var IN invalid” cases. And on top of the list will be “the channel working”, of course :grinning_face_with_smiling_eyes:

Indeed, we have a helpful micro-community here. It is the sole source of help outside of the incomplete in parts SDK documentation.
Off-the-cuff, i would like to pay tribute to the following people whose posts over the years have helped me:

  • RokuMarkn

  • TheEndless

  • RokuJoel

  • greubel

  • RokuChris

  • RokuKC

  • squirreltown

  • destruk

  • renojim

  • belltown

  • gonzotek

Thank you!

Mmm? I am confused here. I had no issue with anything you have said
Thank you. In person I know can come across as offputting when I ask certain questions in the way I ask them. I pick my words very carefully, but I know I don’t always execute the emotion part very well, hence my comment: no undercurrent. I guess I was second guessing myself online since I know I can come across that way in person sometimes. I just want to stay in everyone’s good graces. off</defensive mode> :wink: