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

Reply via email to