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

StackOverflowError on App start #855

Closed
codeknox opened this issue Oct 30, 2018 · 9 comments
Closed

StackOverflowError on App start #855

codeknox opened this issue Oct 30, 2018 · 9 comments
Labels

Comments

@codeknox
Copy link

Description

StackOverflowError during app start

Repro Steps

Please list the steps used to reproduce your issue.

  1. connect app to app center with provided code
  2. after using you app for a while, when it crashes, bad things happen

Details

  1. Which SDK version are you using?

    • 1.8.0
  2. Which OS version did you experience the issue on?

    • Android 7.0
  3. What device version did you see this error on? Were you using an emulator or a physical device?

    • physical tablet device
  4. What third party libraries are you using?

    • lots of them, but I lack to see the importance here
  5. Please enable verbose logging for your app using AppCenter.setLogLevel(Log.VERBOSE) before your call to AppCenter.start(...) and include the logs here:

I will work on collecting the logs, as I need a new deploy, but for now, here is the stack trace:

STACK_TRACE: java.lang.StackOverflowError
	at dalvik.system.BlockGuard.getThreadPolicy(BlockGuard.java:140)
	at libcore.io.BlockGuardOs.read(BlockGuardOs.java:148)
	at libcore.io.IoBridge.read(IoBridge.java:432)
	at java.io.FileInputStream.read(FileInputStream.java:179)
	at libcore.io.Streams.readSingleByte(Streams.java:41)
	at java.io.FileInputStream.read(FileInputStream.java:175)
	at java.io.FilterInputStream.read(FilterInputStream.java:114)
	at java.io.ObjectInputStream.checkReadPrimitiveTypes(ObjectInputStream.java:405)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:770)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at com.microsoft.appcenter.utils.storage.StorageHelper$InternalStorage.readObject(StorageHelper.java:425)
	at com.microsoft.appcenter.crashes.Crashes.buildErrorReport(Crashes.java:750)
	at com.microsoft.appcenter.crashes.Crashes.processPendingErrors(Crashes.java:646)
	at com.microsoft.appcenter.crashes.Crashes.onStarted(Crashes.java:367)
	at com.microsoft.appcenter.AppCenter.finishStartServices(AppCenter.java:787)
	at com.microsoft.appcenter.AppCenter.access$500(AppCenter.java:49)
	at com.microsoft.appcenter.AppCenter$8.run(AppCenter.java:709)
	at android.os.Handler.handleCallback(Handler.java:615)
	at android.os.Handler.dispatchMessage(Handler.java:92)
	at android.os.Looper.loop(Looper.java:137)
	at android.os.HandlerThread.run(HandlerThread.java:60)
@codeknox
Copy link
Author

I guess I found what causes the issue:

image

Lots of zero bytes length files.

And also lots of this on log:

10-30 10:55:02.998 2145-2164/? D/AppCenterCrashes: Process pending error file: /data/data/com.XXXXXX.YYYYYY/files/error/b2283cf7-4275-48fb-ba94-c8546385734a.json
10-30 10:55:03.008 2145-2164/? E/AppCenterCrashes: Error parsing error log
    org.json.JSONException: End of input at character 0 of 
        at org.json.JSONTokener.syntaxError(JSONTokener.java:450)
        at org.json.JSONTokener.nextValue(JSONTokener.java:97)
        at org.json.JSONObject.<init>(JSONObject.java:154)
        at org.json.JSONObject.<init>(JSONObject.java:171)
        at com.microsoft.appcenter.ingestion.models.json.DefaultLogSerializer.deserializeLog(DefaultLogSerializer.java:59)
        at com.microsoft.appcenter.crashes.Crashes.processPendingErrors(Crashes.java:644)
        at com.microsoft.appcenter.crashes.Crashes.onStarted(Crashes.java:367)
        at com.microsoft.appcenter.AppCenter.finishStartServices(AppCenter.java:871)
        at com.microsoft.appcenter.AppCenter.access$600(AppCenter.java:49)
        at com.microsoft.appcenter.AppCenter$8.run(AppCenter.java:793)
        at android.os.Handler.handleCallback(Handler.java:615)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.os.HandlerThread.run(HandlerThread.java:60)

@guperrot
Copy link
Member

guperrot commented Oct 30, 2018

This stack overflow error is when processing a .throwable file with many nesting of exceptions to reconstruct the Throwable that caused crash after restart so it can be accessed via SDK API for inspection.

zero length .json files is a separate issue but can be caused by the crash loop and just be a consequence of the first issue. Though we should delete files that we cannot read, looks like they accumulate in your case so need to check cleanup code to make sure they are deleted.

Any chance you can extract and attach the largest .throwable file that you have? With the .json file having the same uuid. Thanks in advance.

@codeknox
Copy link
Author

All .throwable files are same size:

image

and I also have a lot of Zero bytes .json without the .throwable related file:

image

Anyway, I saved all files here:
https://www.dropbox.com/s/tu3lgk1v3xru9s1/error.zip?dl=0

PS is there a way for me to "work around" these crash when sending a crash situations?

@guperrot
Copy link
Member

guperrot commented Oct 31, 2018

Thanks for sharing the files, we are working on a SDK work around. I am not sure how you can work around without us fixing the SDK so we will share a pre-release of it when the fix is ready.

@guperrot
Copy link
Member

To test a pre-release of the SDK you can point your app/build.gradle file at

repositories {
    maven {
        url "https://dl.bintray.com/vsappcenter/appcenter-snapshot"
    }
}

And use version 1.9.1-2+bc7c1c6f (only this very specific version has the pending fix).

At end of November you will be able to remove this pre-release repository and switch to 1.10.0 instead.

This quick fix prevents the crash loop but we are still working on the pull request to improve the behavior.

If your application is published and other users of your application might see the same issue, we thus recommend using the pre-release for the time being. If you believe only your test device is impacted then clearing storage of the application or uninstalling/reinstalling might be an option.

@codeknox
Copy link
Author

codeknox commented Nov 2, 2018

@guperrot 24h and no crash! thank you very much for the quick turn-around.

@guperrot
Copy link
Member

guperrot commented Nov 2, 2018

You're welcome, we keep the bug opened until we release the SDK end of month.
We have another prerelease version that also cleans the empty/invalid files now: 1.9.1-3+2430ff4b, it also fixes errors at write time on top of the read ones.

@codeknox
Copy link
Author

codeknox commented Nov 6, 2018

@guperrot hey there, installed over the weekend on 3 QA machines, and so far no zero files or leftovers to be seen.
Again, thank you for the promptly turn-around.

@guperrot
Copy link
Member

Version 1.10.0 has been officially released.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants