To comment on the following update, log in, then open the issue: http://www.openoffice.org/issues/show_bug.cgi?id=112448 Issue #|112448 Summary|Additional DisposedExceptions after remote service fai |ls Component|udk Version|OOG680_m2 Platform|HP URL| OS/Version|Linux Status|UNCONFIRMED Status whiteboard| Keywords| Resolution| Issue type|DEFECT Priority|P3 Subcomponent|code Assigned to|kr Reported by|charliehalliday
------- Additional comments from [email protected] Wed Jun 16 12:52:20 +0000 2010 ------- This issue happens when socket based service connects as a client to two or more socket based services. If one of these dependent services fails during a remote call from the client service, then all subsequent remote calls to other services from the client service fail with DisposedException. If the client service is run locally, the failing service connection reports the expected DisposedException but subsequent remote calls work normally. I have created a simple test that demonstrates the issue using three services and a client, using XMain::run for the remote calls. All catch exceptions from UNO methods: ServiceA XMain::run gets a Reference to remote ServiceB XMain and calls run(), it then gets a Reference to remote ServiceC XMain and calls its run(). ServiceB XMain::run prints a message and commits suicide but raising SIGKILL. ServiceC XMain::run prints a message and returns. uno_client loads ServiceA and calls its XMain::run, it has an option to load the service locally or to get a remote reference. To test, the three services are started with the uno executable listening on three different ports. If the uno_client is run using the remote ServiceA: 1. uno_client gets remote Reference to ServiceA XMain, and calls run 2. ServiceA XMain::run starts, gets a remote Reference to ServiceB XMain and calls its run() 3. ServiceB XMain::run prints a message, raises SIGKILL and dies 4. ServiceA XMain::run catches a DisposedException with message "URP_Bridge : disposed", as expected. 5. ServiceA XMain::run, gets a remote Reference to ServiceC XMain, ServiceC accepts the connection but ServiceA immediately catches another DisposedException. If ServiceA is loaded locally by the uno_client, then the connection to ServiceC in step 5 is successful and the subsequent call to the ServiceC XMain::run runs normally. The difference between the cases seems to be that it fails when the client side of the bridge is running in a thread spawned by a socket accept, rather than in the main thread. I have tried getting both remote References in ServiceA before calling the ServiceB method. 1. ServiceA calls SerrviceB XMain::run which gives expected DisposedException. 2. ServiceA calls ServiceC XMain::run, which runs remotely 3. ServiceA XMain::run catches DisposedException (unexpected) 4. ServiceC XMain::run continues running in its process. 5. ServiceC fails when run() tries to return. Environment: Red Hat Enterprise Linux Client release 5.3 (Tikanga) 64 bit install, 32 bit URE and test component build. URE based on OOG680_m5 with patches for issues 90444, 92150, 107490. built on 32 bit install of RHEL 5.3. --------------------------------------------------------------------- Please do not reply to this automatically generated notification from Issue Tracker. Please log onto the website and enter your comments. http://qa.openoffice.org/issue_handling/project_issues.html#notification --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
