Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[iOS] Remote participant is still available after hangup/disconnect #134

Closed
devgokhan opened this issue Dec 4, 2020 · 14 comments
Closed
Assignees
Labels
ADO Linked This issue has an ADO Item on our ADO. Calling Issue involves Calling functionality. iOS Issues involving the iOS SDK

Comments

@devgokhan
Copy link

devgokhan commented Dec 4, 2020

I am tried this with 2 iOS device.
Both cameras was open I called hangup to leave from meeting in first user. First user locally disconnected and closed the meeting ViewController successfully. However second users sees that first user still in the meeting and camera is frozen. Anyway I hangup the second user then this user left from meeting and then I rejoined the meeting with second user. I see that first user still in the meeting but this time camera is off.

This is happens sometimes. I tried this more than one time. It happened again after some successful tries. I saw that, when I pressed hangup everything getting weird. Hangup worked more longer. I mean viewController dismissed more time after. And I tried the rejoin, I was unable to rejoin again. Even if I close the viewController and dispose everything about the call it never fixes until I close the app and re-open again. Maybe I will open new ticket for this. This is another issue too. Reference: #135

@ghost ghost added the Needs: triage 🔍 label Dec 4, 2020
@raosanat
Copy link
Member

raosanat commented Dec 4, 2020

Hi @devgokhan thanks for reporting the issue. But is it possible to attach the logs as well ? so that we can get information on the CallId and the order in which the API’s were called and other relevant information.

@raosanat raosanat added Calling Issue involves Calling functionality. iOS Issues involving the iOS SDK and removed Needs: triage 🔍 labels Dec 4, 2020
@devgokhan
Copy link
Author

devgokhan commented Dec 4, 2020

Hi @raosanat, which logs do you mean? How can I send this logs to you how can I reach them?
Extra note: This issue maybe happens because of this issue: #135

@raosanat
Copy link
Member

raosanat commented Dec 4, 2020

Here are the instructions

https://docs.microsoft.com/en-us/azure/communication-services/concepts/troubleshooting-info?tabs=csharp%2Cios%2Cdotnet#enable-and-access-call-logs

You can upload the logs to one drive and send us the link?

@devgokhan
Copy link
Author

devgokhan commented Dec 4, 2020

Hi @raosanat, this problem happened in other device device that I didn't install the app via cable in debug mode, I was installed the app from TestFlight.. Because of that I am unable to see my app in the list of "Installed Apps".

I tried to face this error in my other second device, which I install with cable in debug mode, however it is not happened. But I remember that this problem happened in this device too, but I don't remember when.

Anyway, I am sharing the logs which taken from second device that I explain. Here is the files: Blog Files Drive Link
This problem must be happened before in this device too but I am not sure if you can see the problem in last logs. Please let me know if see this in this logs.

@raosanat
Copy link
Member

raosanat commented Dec 4, 2020

Hi @devgokhan I tried to reproduce this with our internal app and i was not able to repro the issue. Following is what i did

  1. Logged in on my 2 iPhones.
  2. Both of them joined a group.
  3. 1st user disconnects from the group call and 2nd user is still in the group call but does not see any video from the 1st user, as expected.
  4. 1st user again joins the same group call and 2nd user can see that 1st user has successfully joined call and see the video from 1st user.

There is no camera frozen on 2nd user or that 1st user is still in call in 2nd participant after 1st participant hanged up.

I see that you have multiple logs attached its difficult to co-relate which log belongs to the bug you have described above.

I would suggest reinstalling the app before you repro the issue OR give us the CallId of the call where you faced the issue and we can then map that with which log has the CallId.

@raosanat raosanat self-assigned this Dec 5, 2020
@devgokhan
Copy link
Author

Hi. Actually I saw that twice time happened in my one device which is installed from TestFlight. However I am unable to send this device logs to you that's why explained it before above. But I will try to debug it via cable and try again. I hope problem happens again.

Anyway, this is my group id that I faced the issue;
b132ac00-307f-11eb-8d17-735c039966b1
Problem happened 3 days ago, probably around 12 or 13 in GMT +3. I am not sure the time I forgot.

@devgokhan
Copy link
Author

devgokhan commented Dec 7, 2020

Hi again. Today I tried again.
In my device first I removed the app and reinstall it again then I tried this problem not yet happened. I tried a lot of time but never reproduced..

Anyway, at the same time I was trying in simulator as second particapant. Problem occurred in simulator when I pressed hang up. Application is freezing second or third press of hang up (join close + join close + join close). Note: This problem is not same. In this case page is freezing, before user was able to close a meeting then if tries to join user was unable to that.

I am sharing blog files of simulator from the location User/Library/Developer/CoreSimulator/Devices/Simulator Device Id/data/Containers/Data/Application/App Id/Library/Caches/
Last Simulator Blog Files Drive Link

Last logs must be about the error. Because after problem occurred I copied the logs. Group id is same that I shared above

@raosanat
Copy link
Member

raosanat commented Dec 7, 2020

Hi @devgokhan Can you confirm that freeze is happening because the completion handler on Hangup is not being invoked by the SDK ? I will try to reproduce this tomorrow, Thanks.

@devgokhan
Copy link
Author

devgokhan commented Dec 7, 2020

Hi @raosanat I am not sure it is happening in completion handler or not. But I can say it happens when hangup is called. I wanted to try again to find is it happening when the call method or is it happening after call inside completion handler, I tried again. Anyway, thankfully problem, that I firstly reported, happened again. I pressed hangup, then everything getting strange. And then I was unable to rejoin any meeting..

I am sharing logs with you. Last log acs_sdk-0-s4856891.blog, file updated 16:10 GMT +3 which is problem happened around this time. This happened in iOS 14.2 iPhone 12 simulator.
ACS Log 3 Drive Link

@raosanat
Copy link
Member

raosanat commented Dec 7, 2020

Thanks for the logs @devgokhan . We might have found out the issue that causes after Hangup. Some of the other issues you reported could be related because of the same bug. We will keep you updated. Also please do attach the logs for the bugs you report like this one. Thanks

@sankum-msft
Copy link
Contributor

@devgokhan For the time being, can you please try disposing Renderer objects before calling hangup() as a workaround for this issue?

@devgokhan
Copy link
Author

devgokhan commented Dec 8, 2020

Hi @sankum-msft , actually I am doing this already?

private func close() {
      print("Meeting -> Closing..")
       if self.remoteParticipants.count > 0 {
           for item in self.remoteParticipants {
               item.delegate = nil
           }
       }
       self.remoteParticipants.removeAll()
       self.call?.delegate = nil
       self.timer?.invalidate()
       self.timer = nil
       self.targetRemoteParticipantView?.dispose()
       self.localVRendererView?.dispose()
       self.localRenderer?.dispose()
       self.remoteRenderer?.dispose()
       
       if let call = self.call {
           print("Meeting -> Hangup starting..")
           call.hangup(options: HangupOptions(), completionHandler: { [weak self] (error) in
               if let error = error {
                   Utils.log("Meeting -> Hangup error: \(error.localizedDescription)")
               }
               Utils.log("Meeting -> Hangup completed!")
               Utils.log("Meeting -> Will dismiss..")
               self?.dismiss()
           })
       } else {
           print("Meeting -> Will dismiss - there is no call avaible")
           self.dismiss()
       }
   }

@sankum-msft
Copy link
Contributor

sankum-msft commented Dec 16, 2020

We've identified a bug in Renderer disposal where video object is not cleaned up properly if disposed too early. This snowballs into call connectivity issues as a thread is waiting for that to be cleaned up. I've opened an internal bug AB#2337884 to get it fixed.

@ghost ghost added the ADO Linked This issue has an ADO Item on our ADO. label Dec 16, 2020
@sankum-msft
Copy link
Contributor

This issue is fixed in the latest SDK release. Please reopen this bug if you are still having issues.

@ghost ghost locked as resolved and limited conversation to collaborators Feb 7, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
ADO Linked This issue has an ADO Item on our ADO. Calling Issue involves Calling functionality. iOS Issues involving the iOS SDK
Projects
None yet
Development

No branches or pull requests

3 participants