On Wed, Jun 24, 2009 at 02:34:49PM +0200, Michal Pryc wrote: > For SUNWgnome-desklets during download stage after 78.43kB downloaded > I've got the following exception. Please note that exception occurred > and the progress still moved ~1kB. This is happening every time for > every package, so I am unable to perform more tests :( > > File > "/usr/lib/python2.4/vendor-packages/pkg/client/transport/engine.py", > line 98, in __call_perform > ret, active_handles = self.__mhandle.perform() > error: cannot invoke perform() - multi_perform() is currently running > > File > "/usr/lib/python2.4/vendor-packages/pkg/client/transport/engine.py", > line 98, in __call_perform > ret, active_handles = self.__mhandle.perform() > error: cannot invoke perform() - multi_perform() is currently running > > > The pstack on the packagemanager process during this exception is > showing some thread running: > > http://pastebin.com/f3346021a
The transport uses a single libcurl multi-handle, which means that if multiple threads are going to use the transport, we have to serialize callers of multi_perform() for our handle. All of the client is single threaded, and I haven't seen any documentation from the GUI team outlining a multi-threaded approach to downloading. I'll need you to figure out which threads are calling the transport concurrently. We may have to resort to something stupid in the short term, like a transport lock, but I hope a better solution is available. -j _______________________________________________ pkg-discuss mailing list [email protected] http://mail.opensolaris.org/mailman/listinfo/pkg-discuss
