Q:

StackOverflowError: stack size 8MB on Android 8.1 of ProgressBar

One user upgraded her device to Android 8.1, my app doesn't start after upgrade. I found an exception for her device model and Android version. Pleas help to understand why does this exception occur on Android 8.1 on some devices. I tried emulator on Android 8.1 - no problem. Details below:
Fatal Exception: java.lang.StackOverflowError: stack size 8MB
       at android.widget.ProgressBar.doRefreshProgress(ProgressBar.java:1294)
       at android.widget.ProgressBar.refreshProgress(ProgressBar.java:1353)
       at android.widget.ProgressBar.setProgressInternal(ProgressBar.java:1418)
       at android.widget.ProgressBar.setProgress(ProgressBar.java:1385)
       at com.app.my.BarControllerView.updateCurrentSoundValue(Unknown Source:9)
       at com.app.my.BarControllerView.makeControllerView(Unknown Source:25)
       at com.app.my.BarControllerView.onProgressChanged(Unknown Source:10)

BarController's some code (appears as popup on top of video surface) below. I suppose problem is here with loop of showing BarControllerView and updating level of ProgressBar.
private void initControllerView(View v) {

        int volume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);

        seekbar = (SeekBar) v.findViewById(R.id.seekBar);
        seekbar.setOnSeekBarChangeListener(this);
        seekbar.setMax(audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC));

        seekbar.setProgress(volume);
    }

public void updateCurrentSoundValue() {

        seekbar.setProgress(audioManager.getStreamVolume(AudioManager.STREAM_MUSIC));

    }

@Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                try {
                    audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, progress, 0);
                }
                catch (Exception e) {
                    Toast.makeText(mContext, "Error)", Toast.LENGTH_SHORT).show();
                }
                show(sDefaultTimeout);
            }

public void show(int timeout) {
        if (!mShowing && mAnchor != null) {

            FrameLayout.LayoutParams tlp = new FrameLayout.LayoutParams(
                    ViewGroup.LayoutParams.WRAP_CONTENT,
                    ViewGroup.LayoutParams.MATCH_PARENT,
                    Gravity.RIGHT | Gravity.TOP
            );

            mAnchor.addView(this, tlp);
            mShowing = true;
        }
        updateCurrentSoundValue();

        Message msg = mHandler.obtainMessage(FADE_OUT);
        if (timeout != 0) {
            mHandler.removeMessages(FADE_OUT);
            mHandler.sendMessageDelayed(msg, timeout);
        }
    }

A:

     @Override
     public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            try {
                audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, progress, 0);
            }
            catch (Exception e) {
                 Toast.makeText(mContext, "Error)", Toast.LENGTH_SHORT).show();
            }

            show(sDefaultTimeout, fromUser);
      }

public void show(int timeout, boolean fromUser) {
        if (!mShowing && mAnchor != null) {

            FrameLayout.LayoutParams tlp = new FrameLayout.LayoutParams(
                    ViewGroup.LayoutParams.WRAP_CONTENT,
                    ViewGroup.LayoutParams.MATCH_PARENT,
                    Gravity.RIGHT | Gravity.TOP
            );

            mAnchor.addView(this, tlp);
            mShowing = true;
        }
        if(fromUser)// prevent infinitive recursive
             updateCurrentSoundValue();

        Message msg = mHandler.obtainMessage(FADE_OUT);
        if (timeout != 0) {
            mHandler.removeMessages(FADE_OUT);
            mHandler.sendMessageDelayed(msg, timeout);
        }
 }

