DwyaneQ/ETHWallet

ModifyPassword

HallCheng opened this issue · 0 comments

private boolean verifyPassword(String oldPwd, String newPwd, String newPwdAgain) { if (!TextUtils.equals(Md5Utils.md5(oldPwd), walletPwd)) { ToastUtils.showToast(R.string.modify_password_alert4); return false; } else if (TextUtils.equals(newPwd, newPwdAgain)) { // 判断有误 ToastUtils.showToast(R.string.modify_password_alert5); return false; } return true; }

// 内存溢出crash
WalletUtils.generateWalletFile(newPassword, keypair, destinationDirectory, true);

07-20 00:51:55.733 5416-5437/com.gongchuang.ethtoken W/System.err: io.reactivex.exceptions.UndeliverableException: java.lang.OutOfMemoryError: Failed to allocate a 1036 byte allocation with 4194304 free bytes and 29MB until OOM; failed due to fragmentation (required continguous free 16384 bytes for a new buffer where largest contiguous free 8192 bytes)
at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:349)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:69)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Caused by: java.lang.OutOfMemoryError: Failed to allocate a 1036 byte allocation with 4194304 free bytes and 29MB until OOM; failed due to fragmentation (required continguous free 16384 bytes for a new buffer where largest contiguous free 8192 bytes)
at org.spongycastle.util.Arrays.clone(Arrays.java:602)
at org.spongycastle.crypto.generators.SCrypt.SMix(SCrypt.java:126)
at org.spongycastle.crypto.generators.SCrypt.MFcrypt(SCrypt.java:87)
07-20 00:51:55.734 5416-5437/com.gongchuang.ethtoken W/System.err: at org.spongycastle.crypto.generators.SCrypt.generate(SCrypt.java:66)
at org.web3j.crypto.Wallet.generateDerivedScryptKey(Wallet.java:136)
at org.web3j.crypto.Wallet.create(Wallet.java:74)
at org.web3j.crypto.Wallet.createStandard(Wallet.java:93)
at org.web3j.crypto.WalletUtils.generateWalletFile(WalletUtils.java:64)
at com.gongchuang.ethtoken.utils.ETHWalletUtils.modifyPassword(ETHWalletUtils.java:261)
at com.gongchuang.ethtoken.ui.presenter.WalletDetailPresenter$2.subscribe(WalletDetailPresenter.java:40)
at io.reactivex.internal.operators.observable.ObservableCreate.subscribeActual(ObservableCreate.java:40)
at io.reactivex.Observable.subscribe(Observable.java:10981)
at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeTask.run(ObservableSubscribeOn.java:96)
at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:452)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)