Discussion:
Bootchooser has unexpected changes of variable 'remaining_attempts'
Norbert Wiedmann
2017-07-24 11:28:41 UTC
Permalink
Hi everyone,
I have an unexpected behaviour with my bootchooser framework since
barebox version 2017.05.

After reflashing barebox, and cleaning the environment and the state partition,
the boot message shows:

stMyBoot: New state registered 'stMyBoot'
stMyBoot: Failed to find any valid state copy in any bucket
stMyBoot: Failed to read state with format dtb, -2
state stMyBoot.14: Failed to load persistent state, continuing with defaults,-2

Barebox continues with defaults, this seems OK.
I double checked this by printing the variables (default is 0xffffffff)

printenv stMyBoot.bootchooser.factory.remaining_attempts
stMyBoot.bootchooser.factory.remaining_attempts=4294967295

printenv stMyBoot.bootchooser.system1.remaining_attempts
stMyBoot.bootchooser.system1.remaining_attempts=4294967295

printenv stMyBoot.bootchooser.system2.remaining_attempts
stMyBoot.bootchooser.system2.remaining_attempts=4294967295

Next, I call boot, and everything works fine, the target with the highest
priority, which is 'system1', boots.

booting 'bootchooser'
booting 'system1'

The system boots as expected. I have no modification within my linux.

The problem starts with the second boot, which fails:

barebox outputs:
stMyBoot: New state registered 'stMyBoot'
stMyBoot: Using bucket ***@0x00000000

This is OK, the bucket was written during the first boot, because the
remaining_attempts should be decreased. But, unexpectly, the bootchooser
is completly deactivated, all three boot targets have remaining_attempts=0

booting 'bootchooser'
bootchooser: No valid targets found:
system1
id: 1
priority: 22
default_priority: 1
remaining attempts: 0
default attempts: 3
boot: 'system1'
disabled due to remaining attempts = 0
system2
id: 2
priority: 21
default_priority: 1
remaining attempts: 0
default attempts: 3
boot: 'system2'
disabled due to remaining attempts = 0
factory
id: 3
priority: 10
default_priority: 1
remaining attempts: 0
default attempts: 3
boot: 'factory'
disabled due to remaining attempts = 0
booting 'bootchooser' failed: No such file or directory

I placed a printenv in my boot entry file and, when booting the first time
after a new reflashing, the output is
stMyBoot.bootchooser.system1.remaining_attempts=0

I looks like the bootchooser doesn't use the default/actual value for
'remaining_attempts' when saving the variables after he has decided which
boot target he will use.

Everything worked fine up to 2017.04
Behaviour as descriped tested with 2017.05, 2017.07.1

What is going wrong?
Thanks for your consideration in this matter.

Best regards
Norbert Wiedmann

Loading...