7stacks v1.5 beta 2 is out

Posted by on Jun 27, 2011 in 7stacks, News | Comments Off on 7stacks v1.5 beta 2 is out

I have just released 7stacks v1.5 beta 2.  As I stated in my previous post, this is simply a workaround for those who are having problems w/ 7stacks and Google Chrome.  Often, when Chrome was running (mostly when viewing Flash or Silverlight sites), 7stacks would simply not appear when clicked.

If you do not use Chrome, you can still continue to use beta 1.  If you do use Chrome, I’d highly suggest immediately downloading beta 2.

Many, many of you have correctly pointed out that Chrome seems to foul up 7stacks.  I could be way off, but I believe the reason is because of a bug inside Google Chrome.  Yes, I realize that given the odds-on choice of who screwed up: tiny, insect-like me, or massive, behemoth Google, usually the egregious party will be me.  But I honestly do think that Chrome is doing something wrong.  If you don’t care for highly geeky explanations, you’re under no obligation to read the following…

Warning: Science Content — In the 7stacks preferences, there is an option to make the show/hide behavior to mimic OS X’s; that is: click the icon once to show the stack, click it again to hide it.  In Windows, clicking the stack icon again has the effect of running a 2nd copy of that stack.  So, in order to accomplish the trick of mimicking OSX, that stack’s 2nd copy (Stack #2) checks to see if another copy is running (Stack #1).  If it is, Stack #2 sends a message to Stack #1, telling Stack #1 to close, then Stack #2 closes itself.  Basically, when a stack pops up, it asks, “Are there any other stacks out there?”

Each of these stacks are what Windows calls a “process”.  And the act of these processes communicating w/ one another is a programming technique called inter-process communication, or “IPC” for short.

The easiest, and most efficient method of IPC within Windows is the use of a built-in message, WM_COPYDATA.  It allows processes to fire off a message that will be received by other processes that are looking for these messages to come along.  But, for some reason, when Chrome is running, all WM_COPYDATA messages being intercepted, and not being passed on as they should.

In effect, when it asks “Are there any other stacks out there?”  It should either hear a “Yes!” from another stack, or it should receive all “No”s from the other processes.  Instead, Chrome eats the message and says nothing, and 7stacks sits there and waits until it hears a reply.  This is why clicking the stack does nothing.

Its also entirely possible that this is not a bug in Chrome; it could’ve been designed this way.  The only reason I could imagine why is for security purposes.  I guess it could be theoretically possible to stuff data into other processes using WM_COPYDATA, but there’s no way to do this as far as I know.  Again, the chances that Google is smarter than me is pretty high.

At any rate, beta 2 handles IPC a different way: by the use of timers and semaphores.  Think of it as two spies leaving messages for one another at a dead-drop site, and each one checking that site at a set interval.  In this case, that interval is 10 milliseconds.  This method still accomplishes the goal, without running afoul of Chrome.

Computer Science lesson over…

If anyone finds any more bugs, send a tech support email.  I may not reply to every email, but I do read every email.  Thanks for your continued support of 7stacks.