[ 
https://issues.apache.org/jira/browse/CB-14020?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Elijah R updated CB-14020:
--------------------------
    Description: 
There is a race condition in CDVLocation.m.  The 
self.locationData.locationCallbacks array can be mutated in one thread and 
enumerated concurrently in another thread, which causes the app to crash with 
the following exception:

Fatal Exception: NSGenericException
Collection <__NSArrayM: 0x1d444d020> was mutated while being enumerated.

The exception is raised at [CDVLocation returnLocationError:withMessage:] 
(CDVLocation.m:312)

I am unable to reproduce the issue, however it is a common crash for users of 
my app.  A user named seeday on github has opened a pull request to address 
this issue: https://github.com/apache/cordova-plugin-geolocation/pull/91

I'm filing this bug to help get that work merged.

I've attached an abridged crash log with the relevant stack trace.

  was:
There is a race condition in CDVLocation.m.  The 
self.locationData.locationCallbacks array can be mutated in one thread and 
enumerated concurrently in another thread, which causes the app to crash with 
the following exception:

Fatal Exception: NSGenericException
*** Collection <__NSArrayM: 0x1d444d020> was mutated while being enumerated.

The exception is raised at [CDVLocation returnLocationError:withMessage:] 
(CDVLocation.m:312)

I am unable to reproduce the issue, however it is a common crash for users of 
my app.  A user named seeday on github has opened a pull request to address 
this issue: https://github.com/apache/cordova-plugin-geolocation/pull/91

I'm filing this bug to help get that work merged.

I've attached an abridged crash log with the relevant stack trace.


> cordova-plugin-geolocation crashes with "Collection was mutated while being 
> enumerated"
> ---------------------------------------------------------------------------------------
>
>                 Key: CB-14020
>                 URL: https://issues.apache.org/jira/browse/CB-14020
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: cordova-plugin-geolocation
>    Affects Versions: Master
>         Environment: iOS 11
> cordova-ios@4.3.1
> cordova-plugin-geolocation@2.4.2
> Although I am running an older version, this issue does not appear to be 
> fixed in the latest plugin version as the relevant code has not been changed.
> The javascript in my app is making multiple calls to 
> `navigator.geolocation.getCurrentPosition()` in rapid succession.
>            Reporter: Elijah R
>            Priority: Major
>              Labels: crash, easyfix, pull-request-available, race-condition
>         Attachments: crash-log.txt
>
>
> There is a race condition in CDVLocation.m.  The 
> self.locationData.locationCallbacks array can be mutated in one thread and 
> enumerated concurrently in another thread, which causes the app to crash with 
> the following exception:
> Fatal Exception: NSGenericException
> Collection <__NSArrayM: 0x1d444d020> was mutated while being enumerated.
> The exception is raised at [CDVLocation returnLocationError:withMessage:] 
> (CDVLocation.m:312)
> I am unable to reproduce the issue, however it is a common crash for users of 
> my app.  A user named seeday on github has opened a pull request to address 
> this issue: https://github.com/apache/cordova-plugin-geolocation/pull/91
> I'm filing this bug to help get that work merged.
> I've attached an abridged crash log with the relevant stack trace.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org
For additional commands, e-mail: issues-h...@cordova.apache.org

Reply via email to