Open alexblack opened 8 years ago
Thank you for your feedback. We prioritize issues that have clear and concise repro steps. Please see our Bug Reporting Guidelines about what information should be added to this issue.
Please try the latest SDK. Our release notes have details about what issues were fixed in each release.
In addition, you might find the following resources helpful:
Hi @wangmengyan95 what more info would you like? If you have any insight into how to reproduce this parse bug that would be super helpful. It seems rather mysterious to me.
I've included the information I've captured from 3 different users who have experienced this issue, I'm happy to collect any further data you require.
Hi @alexblack, thanks for the quick response, I am trying to figure out what is the possible cause of this issue. I will update the information I need here.
This seems like it could be related to #267, but instead of saving a new ParseInstallation
instance with the installationId
from disk from a ParseInstallation
that has failed to be read from LDS, the ParseInstallation
in LDS is succeeding to be read at some point after the first read failed and the save on the new instance who's objectId
is then being tracked by LDS so LDS throws an error when the save result returns.
I have the same bug, I don't know how to reproduce it. It keeps showing up in my crash tracking system. I am deleting the parse data manually from the disk and cache when the user logs out. The parse installation is also cleared from the cloud code.
Hi Folks,
Looks like I have similar issue. What is interesting that my android app has been in production for 3 month. And only during last 1 month I see such stack traces from real users in my bug report system:
java.lang.RuntimeException: Attempted to change an objectId to one that's already known to the Offline Store. at com.parse.OfflineStore.updateObjectId(OfflineStore.java:1468) at com.parse.ParseObject.notifyObjectIdChanged(ParseObject.java:1353) at com.parse.ParseObject.setState(ParseObject.java:751) at com.parse.ParseObject.setState(ParseObject.java:739) at com.parse.ParseObject$6.then(ParseObject.java:1500) at com.parse.ParseObject$6.then(ParseObject.java:1485) at bolts.Task$14.run(Task.java:798) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeImmediately(Task.java:789) at bolts.Task.access$000(Task.java:32) at bolts.Task$10.then(Task.java:581) at bolts.Task$10.then(Task.java:578) at bolts.Task.runContinuations(Task.java:875) at bolts.Task.trySetError(Task.java:929) at bolts.TaskCompletionSource.trySetError(TaskCompletionSource.java:46) at bolts.TaskCompletionSource.setError(TaskCompletionSource.java:71) at bolts.Task$15$1.then(Task.java:854) at bolts.Task$15$1.then(Task.java:843) at bolts.Task$14.run(Task.java:798) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeImmediately(Task.java:789) at bolts.Task.access$000(Task.java:32) at bolts.Task$10.then(Task.java:581) at bolts.Task$10.then(Task.java:578) at bolts.Task.runContinuations(Task.java:875) at bolts.Task.trySetError(Task.java:929) at bolts.TaskCompletionSource.trySetError(TaskCompletionSource.java:46) at bolts.TaskCompletionSource.setError(TaskCompletionSource.java:71) at bolts.Task$15$1.then(Task.java:854) at bolts.Task$15$1.then(Task.java:843) at bolts.Task$14.run(Task.java:798) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeImmediately(Task.java:789) at bolts.Task.access$000(Task.java:32) at bolts.Task$10.then(Task.java:581) at bolts.Task$10.then(Task.java:578) at bolts.Task.runContinuations(Task.java:875) at bolts.Task.trySetError(Task.java:929) at bolts.TaskCompletionSource.trySetError(TaskCompletionSource.java:46) at bolts.TaskCompletionSource.setError(TaskCompletionSource.java:71) at bolts.Task$15$1.then(Task.java:854) at bolts.Task$15$1.then(Task.java:843) at bolts.Task$14.run(Task.java:798) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeImmediately(Task.java:789) at bolts.Task.continueWith(Task.java:588) at bolts.Task.continueWith(Task.java:599) at bolts.Task$15.run(Task.java:843) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeAfterTask(Task.java:830) at bolts.Task.access$100(Task.java:32) at bolts.Task$11.then(Task.java:635) at bolts.Task$11.then(Task.java:632) at bolts.Task.runContinuations(Task.java:875) at bolts.Task.trySetError(Task.java:929) at bolts.TaskCompletionSource.trySetError(TaskCompletionSource.java:46) at bolts.TaskCompletionSource.setError(TaskCompletionSource.java:71) at bolts.Task$15$1.then(Task.java:854) at bolts.Task$15$1.then(Task.java:843) at bolts.Task$14.run(Task.java:798) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeImmediately(Task.java:789) at bolts.Task.continueWith(Task.java:588) at bolts.Task.continueWith(Task.java:599) at bolts.Task$15.run(Task.java:843) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeAfterTask(Task.java:830) at bolts.Task.access$100(Task.java:32) at bolts.Task$11.then(Task.java:635) at bolts.Task$11.then(Task.java:632) at bolts.Task.runContinuations(Task.java:875) at bolts.Task.trySetResult(Task.java:913) at bolts.TaskCompletionSource.trySetResult(TaskCompletionSource.java:39) at bolts.TaskCompletionSource.setResult(TaskCompletionSource.java:62) at bolts.Task$15$1.then(Task.java:856) at bolts.Task$15$1.then(Task.java:843) at bolts.Task$14.run(Task.java:798) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeImmediately(Task.java:789) at bolts.Task.continueWith(Task.java:588) at bolts.Task.continueWith(Task.java:599) at bolts.Task$15.run(Task.java:843) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeAfterTask(Task.java:830) at bolts.Task.access$100(Task.java:32) at bolts.Task$11.then(Task.java:635) at bolts.Task$11.then(Task.java:632) at bolts.Task.runContinuations(Task.java:875) at bolts.Task.trySetResult(Task.java:913) at bolts.TaskCompletionSource.trySetResult(TaskCompletionSource.java:39) at bolts.TaskCompletionSource.setResult(TaskCompletionSource.java:62) at bolts.Task$15$1.then(Task.java:856) at bolts.Task$15$1.then(Task.java:843) at bolts.Task$14.run(Task.java:798) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeImmediately(Task.java:789) at bolts.Task.continueWith(Task.java:588) at bolts.Task.continueWith(Task.java:599) at bolts.Task$15.run(Task.java:843) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) at java.lang.Thread.run(Thread.java:838)
Unfortunately, I can't reproduce it locally on my test environments (emulators and real devices). Taking into account it's failure during async update of the offline mode, I can't say for sure what app actions cause this problem.
Parse Team, could you explain possible cases that may lead to such behaviour? Is it possible to ignore such exceptions that are currently fatal for my app and fully crash it.
This issue has not been updated for 7 days. If you have additional information to help pinpoint this issue as an SDK bug, please comment on this issue. We will close this issue in 7 days if no additional information is provided. Thank you for your feedback.
Hi Team, any updates on this? I don't want to disable parse in my app due to this small issue.
This issue has not been updated for 7 days. If you have additional information to help pinpoint this issue as an SDK bug, please comment on this issue. We will close this issue in 7 days if no additional information is provided. Thank you for your feedback.
It is for sure a problem which is comming from Parse SDK. We use the latest version and we can see the same issue for some users on some instalations:
Fatal Exception: java.lang.RuntimeException: Unable to create application OurcoolApplication: java.lang.RuntimeException: Attempted to change an objectId to one that's already known to the Offline Store.
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4861)
at android.app.ActivityThread.access$1500(ActivityThread.java:178)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1531)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5637)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
Caused by java.lang.RuntimeException: Attempted to change an objectId to one that's already known to the Offline Store.
at com.parse.OfflineStore.updateObjectId(OfflineStore.java:1468)
at com.parse.ParseObject.notifyObjectIdChanged(ParseObject.java:1260)
at com.parse.ParseObject.setState(ParseObject.java:738)
at com.parse.ParseObject.setState(ParseObject.java:726)
at com.parse.ParseObject$6.then(ParseObject.java:1407)
at com.parse.ParseObject$6.then(ParseObject.java:1392)
at bolts.Task$14.run(Task.java:798)
at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
at bolts.Task.completeImmediately(Task.java:789)
at bolts.Task.access$000(Task.java:32)
at bolts.Task$10.then(Task.java:581)
at bolts.Task$10.then(Task.java:578)
at bolts.Task.runContinuations(Task.java:875)
at bolts.Task.trySetError(Task.java:929)
at bolts.TaskCompletionSource.trySetError(TaskCompletionSource.java:46)
at bolts.TaskCompletionSource.setError(TaskCompletionSource.java:71)
at bolts.Task$15$1.then(Task.java:854)
at bolts.Task$15$1.then(Task.java:843)
at bolts.Task$14.run(Task.java:798)
at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
at bolts.Task.completeImmediately(Task.java:789)
at bolts.Task.access$000(Task.java:32)
at bolts.Task$10.then(Task.java:581)
at bolts.Task$10.then(Task.java:578)
at bolts.Task.runContinuations(Task.java:875)
at bolts.Task.trySetError(Task.java:929)
at bolts.TaskCompletionSource.trySetError(TaskCompletionSource.java:46)
at bolts.TaskCompletionSource.setError(TaskCompletionSource.java:71)
at bolts.Task$15$1.then(Task.java:854)
at bolts.Task$15$1.then(Task.java:843)
at bolts.Task$14.run(Task.java:798)
at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
at bolts.Task.completeImmediately(Task.java:789)
at bolts.Task.access$000(Task.java:32)
at bolts.Task$10.then(Task.java:581)
at bolts.Task$10.then(Task.java:578)
at bolts.Task.runContinuations(Task.java:875)
at bolts.Task.trySetError(Task.java:929)
at bolts.TaskCompletionSource.trySetError(TaskCompletionSource.java:46)
at bolts.TaskCompletionSource.setError(TaskCompletionSource.java:71)
at bolts.Task$15$1.then(Task.java:854)
at bolts.Task$15$1.then(Task.java:843)
at bolts.Task$14.run(Task.java:798)
at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
at bolts.Task.completeImmediately(Task.java:789)
at bolts.Task.continueWith(Task.java:588)
at bolts.Task.continueWith(Task.java:599)
at bolts.Task$15.run(Task.java:843)
at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
at bolts.Task.completeAfterTask(Task.java:830)
at bolts.Task.access$100(Task.java:32)
at bolts.Task$11.then(Task.java:635)
at bolts.Task$11.then(Task.java:632)
at bolts.Task.runContinuations(Task.java:875)
at bolts.Task.trySetError(Task.java:929)
at bolts.TaskCompletionSource.trySetError(TaskCompletionSource.java:46)
at bolts.TaskCompletionSource.setError(TaskCompletionSource.java:71)
at bolts.Task$15$1.then(Task.java:854)
at bolts.Task$15$1.then(Task.java:843)
at bolts.Task$14.run(Task.java:798)
at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
at bolts.Task.completeImmediately(Task.java:789)
at bolts.Task.continueWith(Task.java:588)
at bolts.Task.continueWith(Task.java:599)
at bolts.Task$15.run(Task.java:843)
at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
at bolts.Task.completeAfterTask(Task.java:830)
at bolts.Task.access$100(Task.java:32)
at bolts.Task$11.then(Task.java:635)
at bolts.Task$11.then(Task.java:632)
at bolts.Task.runContinuations(Task.java:875)
at bolts.Task.trySetResult(Task.java:913)
at bolts.TaskCompletionSource.trySetResult(TaskCompletionSource.java:39)
at bolts.TaskCompletionSource.setResult(TaskCompletionSource.java:62)
at bolts.Task$15$1.then(Task.java:856)
at bolts.Task$15$1.then(Task.java:843)
at bolts.Task$14.run(Task.java:798)
at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
at bolts.Task.completeImmediately(Task.java:789)
at bolts.Task.continueWith(Task.java:588)
at bolts.Task.continueWith(Task.java:599)
at bolts.Task$15.run(Task.java:843)
at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
at bolts.Task.completeAfterTask(Task.java:830)
at bolts.Task.access$100(Task.java:32)
at bolts.Task$11.then(Task.java:635)
at bolts.Task$11.then(Task.java:632)
at bolts.Task.runContinuations(Task.java:875)
at bolts.Task.trySetResult(Task.java:913)
at bolts.TaskCompletionSource.trySetResult(TaskCompletionSource.java:39)
at bolts.TaskCompletionSource.setResult(TaskCompletionSource.java:62)
at bolts.Task$15$1.then(Task.java:856)
at bolts.Task$15$1.then(Task.java:843)
at bolts.Task$14.run(Task.java:798)
at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
at bolts.Task.completeImmediately(Task.java:789)
at bolts.Task.continueWith(Task.java:588)
at bolts.Task.continueWith(Task.java:599)
at bolts.Task$15.run(Task.java:843)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
This issue has not been updated for 7 days. If you have additional information to help pinpoint this issue as an SDK bug, please comment on this issue. We will close this issue in 7 days if no additional information is provided. Thank you for your feedback.
I'm getting the same error when trying to save my PFUser:
Attempted to change an objectId to one that's already known to the OfflineStore.
Here is the LDS from a device that faces this issue
For data in this app: https://parse.com/apps/invoice-maker-dev
Here is some meta data:
{"appVersion":"0.1.192","createdAt":"Thu Jan 21 20:27:53 EST 2016","deviceType":"android","idx":"165", "installationId":"ea4c6657-e4c1-4ed6-a79c-759f0f794469","msg":"There were 2 exceptions.","objectId":"Nn0mwH9M6o","runCount":"20","updatedAt":"Thu Jan 21 23:59:11 EST 2016"}
{"appVersion":"0.1.192","createdAt":"Thu Jan 21 20:27:53 EST 2016","deviceType":"android","idx":"163","installationId":"ea4c6657-e4c1-4ed6-a79c-759f0f794469","msg":"Attempted to change an objectId to one that's already known to the Offline Store.","objectId":"Nn0mwH9M6o","runCount":"20","updatedAt":"Thu Jan 21 23:59:10 EST 2016"}
Parse Team, could you provide an ETA for the fix of the issue. It's pretty important for all of us, because it affects our users.
Could anyone confirm that this is still an issue with the latest version of the SDK (v1.13.0), an updated stack trace, and a small project that repros this issue with it?
Is the LDS I shared from 1.12.0 useful at all? On 22 Jan 2016 4:16 pm, "Grantland Chew" notifications@github.com wrote:
Could anyone confirm that this is still an issue with the latest version of the SDK (v1.13.0), an updated stack trace, and a small project that repros this issue with it?
— Reply to this email directly or view it on GitHub https://github.com/ParsePlatform/Parse-SDK-Android/issues/267#issuecomment-174095809 .
All I was able to determine from that was there was not another ParseInstallation with the same objectId in SQLite.
There is a fair amount of info on this thread. A LDS capture, stack traces, example objects on your server that are having the problem.
Like the other Parse bugs I've hit I don't have any insights into how to reproduce this one. I do have it reproducible right now on a device, if there is anything else you would like me to collect just let me know.
Hi Folks,
I have to confirm that even on 1.13 version the problem is reproducible :(
Stack trace is still the same:
java.lang.RuntimeException: Attempted to change an objectId to one that's already known to the Offline Store. at com.parse.OfflineStore.updateObjectId(OfflineStore.java:1469) at com.parse.ParseObject.notifyObjectIdChanged(ParseObject.java:1202) at com.parse.ParseObject.setState(ParseObject.java:680) at com.parse.ParseObject.setState(ParseObject.java:668) at com.parse.ParseObject$6.then(ParseObject.java:1349) at com.parse.ParseObject$6.then(ParseObject.java:1334) at bolts.Task$14.run(Task.java:872) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeImmediately(Task.java:863) at bolts.Task.access$000(Task.java:32) at bolts.Task$10.then(Task.java:654) at bolts.Task$10.then(Task.java:651) at bolts.Task.runContinuations(Task.java:956) at bolts.Task.trySetError(Task.java:1011) at bolts.TaskCompletionSource.trySetError(TaskCompletionSource.java:46) at bolts.TaskCompletionSource.setError(TaskCompletionSource.java:71) at bolts.Task$15$1.then(Task.java:932) at bolts.Task$15$1.then(Task.java:921) at bolts.Task$14.run(Task.java:872) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeImmediately(Task.java:863) at bolts.Task.access$000(Task.java:32) at bolts.Task$10.then(Task.java:654) at bolts.Task$10.then(Task.java:651) at bolts.Task.runContinuations(Task.java:956) at bolts.Task.trySetError(Task.java:1011) at bolts.TaskCompletionSource.trySetError(TaskCompletionSource.java:46) at bolts.TaskCompletionSource.setError(TaskCompletionSource.java:71) at bolts.Task$15$1.then(Task.java:932) at bolts.Task$15$1.then(Task.java:921) at bolts.Task$14.run(Task.java:872) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeImmediately(Task.java:863) at bolts.Task.access$000(Task.java:32) at bolts.Task$10.then(Task.java:654) at bolts.Task$10.then(Task.java:651) at bolts.Task.runContinuations(Task.java:956) at bolts.Task.trySetError(Task.java:1011) at bolts.TaskCompletionSource.trySetError(TaskCompletionSource.java:46) at bolts.TaskCompletionSource.setError(TaskCompletionSource.java:71) at bolts.Task$15$1.then(Task.java:932) at bolts.Task$15$1.then(Task.java:921) at bolts.Task$14.run(Task.java:872) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeImmediately(Task.java:863) at bolts.Task.continueWith(Task.java:661) at bolts.Task.continueWith(Task.java:672) at bolts.Task$15.run(Task.java:921) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeAfterTask(Task.java:908) at bolts.Task.access$100(Task.java:32) at bolts.Task$11.then(Task.java:708) at bolts.Task$11.then(Task.java:705) at bolts.Task.runContinuations(Task.java:956) at bolts.Task.trySetError(Task.java:1011) at bolts.TaskCompletionSource.trySetError(TaskCompletionSource.java:46) at bolts.TaskCompletionSource.setError(TaskCompletionSource.java:71) at bolts.Task$15$1.then(Task.java:932) at bolts.Task$15$1.then(Task.java:921) at bolts.Task$14.run(Task.java:872) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeImmediately(Task.java:863) at bolts.Task.continueWith(Task.java:661) at bolts.Task.continueWith(Task.java:672) at bolts.Task$15.run(Task.java:921) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeAfterTask(Task.java:908) at bolts.Task.access$100(Task.java:32) at bolts.Task$11.then(Task.java:708) at bolts.Task$11.then(Task.java:705) at bolts.Task.runContinuations(Task.java:956) at bolts.Task.trySetResult(Task.java:994) at bolts.TaskCompletionSource.trySetResult(TaskCompletionSource.java:39) at bolts.TaskCompletionSource.setResult(TaskCompletionSource.java:62) at bolts.Task$15$1.then(Task.java:934) at bolts.Task$15$1.then(Task.java:921) at bolts.Task$14.run(Task.java:872) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeImmediately(Task.java:863) at bolts.Task.continueWith(Task.java:661) at bolts.Task.continueWith(Task.java:672) at bolts.Task$15.run(Task.java:921) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeAfterTask(Task.java:908) at bolts.Task.access$100(Task.java:32) at bolts.Task$11.then(Task.java:708) at bolts.Task$11.then(Task.java:705) at bolts.Task.runContinuations(Task.java:956) at bolts.Task.trySetResult(Task.java:994) at bolts.TaskCompletionSource.trySetResult(TaskCompletionSource.java:39) at bolts.TaskCompletionSource.setResult(TaskCompletionSource.java:62) at bolts.Task$15$1.then(Task.java:934) at bolts.Task$15$1.then(Task.java:921) at bolts.Task$14.run(Task.java:872) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeImmediately(Task.java:863) at bolts.Task.continueWith(Task.java:661) at bolts.Task.continueWith(Task.java:672) at bolts.Task$15.run(Task.java:921) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:841)
"Like the other Parse bugs I've hit I don't have any insights into how to reproduce this one. I do have it reproducible right now on a device, if there is anything else you would like me to collect just let me know."
@grantland any thoughts? Or any suggestions on how to reproduce this?
@stepanov-standy would you be able to provide a small project and environment this issue reproduces on?
@alexblack i do not. this issue does not appear for us in any of our projects or environments so anything we could think of would be a shot in the dark. owners of the codebase that this reproduces are generally responsible for knowing how to reproduce it, since they have code that shows these symptoms.
@grantland sorry I was asking if there was anything else you wanted me to collect from the device I have that repros the problem.
"owners of the codebase that this reproduces are generally responsible for knowing how to reproduce it"
Yes I'm aware of Parse's attitude towards its customers :)
I'm not sure about the other Parse users on this thread, but I certainly feel completely in the dark about how to reproduce these bizarre bugs.
My code is doing pretty straightforward things, like, saving the ParseInstallation object. Its not clear how you expect me to figure out from my code that saves an installation why your code is throwing this exception.
@alexblack grabbing data from a live production device isn't really a viable solution, since I'd need to step through methods in the SDK with the debugger. I could, however, do this if I had stable repro steps.
If this was the cause of something straightforward, it would be easy to isolate into a small project. This doesn't seem to be the case since none of those affected can reproduce it.
@grantland I don't seem to see a response to my question. I have a device that repros the problem, I managed to capture the LDS from it, is there anything you'd like me to capture from it that might help give us clues as to the problem?
eg logs, or values of variables, etc? When we don't have a simple repro case steps like these are standard bug solving practice.
I answered this above:
grabbing data from a live production device isn't really a viable solution, since I'd need to step through methods in the SDK with the debugger. I could, however, do this if I had stable repro steps.
Basically I need internal variables and possibly unattached object instances, which cannot be grabbed externally and reported.
The biggest problem is that without a repro we cannot prioritize this issue.
Odd, I was expecting a yes or a no.
What if I ran the app with the Parse Android SDK source attached? I could then set breakpoints, and inspect things.
It was a no.
If you can reproduce it, why not isolate the problem and deliver a repro project?
As I mentioned above, I'm in the dark about how to isolate the problem and reproduce it. I am not familiar with your codebase, or where to look. My code simply calls ParseInstallation.saveInBackground, I'd be stepping through and learning the Parse codebase to figure this one out. How would you suggest I go about that?
Given my new idea - attaching the debugger and running with the sources attached, is there anything useful I could grab for you? Like internal variables etc.
I seem to be missing something. How are you offering to attach the debugger and grab me variables, etc. if you aren't able to reproduce the issue?
I'm not sure what you're missing. I have a device on which the issue repros. I think I mentioned that above.
Third time asking - I can attach the debugger and run with the sources attached, is there anything useful I could grab for you?
No, you did not mention that you can reproduce this.
Debugging this over the internet is not scalable. If you're able to reproduce this, you can definitely isolate the issue. It's a simple process of scraping away code until you have the bare minimum that causes this issue.
I will not be spending any more time on this issue if you're not willing to spend the time to provide a repro.
I never said I could reproduce this. I assume by "reproduce this" you mean provide a simple project that demonstrates the problem. If I've misunderstood please let me know.
I have mentioned several times that I have a device on which the problem reproduces (or, happens). That is how I captured the LDS. I was simply offering to grab some more info from it using the debugger to help us figure this one out.
I will not be spending any more time on this issue if you're not willing to spend the time to provide a repro.
You seem to be confused. Its not a matter of my willingness, I am very willing :) I've asked several times for some suggestions from you on how to go about this, given that I am in the dark about your codebase.
A simple pointer in the right direction would be super helpful, thanks!
how to go about this
Figure out the triggers or actions that result in this error with your device. You're probably the only person in this thread that has access to a device that it occurs on, so the ball is in your court.
I've already stated that the error occurs when ParseInstallation.saveInBackground is called.
That clearly isn't the only cause of it, since ParseInstallation.saveInBackground() succeeds on it's own.
This problem happens on the device currently. It happens when ParseInstallation.saveInBackground() is called. I'm not sure what else you're looking for here regarding triggers or actions that result in this error with the device.
I'm looking for a project and/or steps that I can use to make this problem occur for me on my machine. I will not be responding to any more comments on this thread without a way to accomplish this.
I'm looking for a project and/or steps that I can use to make this problem occur for me on my machine
You've said that numerous times. I simply asked for a pointer in the right direction given that I am not familiar with your codebase.
I seem to be missing something. How are you offering to attach the debugger and grab me variables, etc. if you aren't able to reproduce the issue?
Did you figure out what you were missing? I again was expecting a yes or no.
This issue has not been updated for 7 days. If you have additional information to help pinpoint this issue as an SDK bug, please comment on this issue. We will close this issue in 7 days if no additional information is provided. Thank you for your feedback.
This issue has not been updated for 7 days. If you have additional information to help pinpoint this issue as an SDK bug, please comment on this issue. We will close this issue in 7 days if no additional information is provided. Thank you for your feedback.
This issue has not been updated for 7 days. If you have additional information to help pinpoint this issue as an SDK bug, please comment on this issue. We will close this issue in 7 days if no additional information is provided. Thank you for your feedback.
Hi There! Not able to reproduce the issue in synthetic test I've decided to replace all saveInBackground call to saveEventually. It was my assumption that problem was in saveInBackground. Now I can say that it was wrong. Nothing was changed after the replacement. I still have the same amount of crashes per day (on ~1100 sessions I have ~16-20 crashes).
I've received dozens of comments from my users with ask to fix my app crashes, but I still can't reproduce required for the crash conditions on my real devices and emulators.
Does someone find a workaround for that problem? What I can say for sure that the first incident with such problem was logged on Google Analytics on 14 November :(
This issue has not been updated for 7 days. If you have additional information to help pinpoint this issue as an SDK bug, please comment on this issue. We will close this issue in 7 days if no additional information is provided. Thank you for your feedback.
This issue has not been updated for 7 days. If you have additional information to help pinpoint this issue as an SDK bug, please comment on this issue. We will close this issue in 7 days if no additional information is provided. Thank you for your feedback.
This issue has not been updated for 7 days. If you have additional information to help pinpoint this issue as an SDK bug, please comment on this issue. We will close this issue in 7 days if no additional information is provided. Thank you for your feedback.
This issue has not been updated for 7 days. If you have additional information to help pinpoint this issue as an SDK bug, please comment on this issue. We will close this issue in 7 days if no additional information is provided. Thank you for your feedback.
Here is the info I captured:
Another:
And another: