I run into a problem with rEFInd 0.12.0 in GNOME Boxes (qemu/kvm), which was an unresponsive blank screen with refind banner-logo without any menu entries. I managed to git-bisect it and created a WIP patch https://sourceforge.net/p/refind/code/merge-requests/30/ which contains more information, and found a couple of solutions I thought I'd share:
Either:
1. Hide the banner (logo) in refind.conf by adding line hideui banner
2. Downgrade to 0.11.5
3. Build refind with my patch mentioned above
Hopefully somebody finds it helpful :)
Last edit: ignapk 2020-11-29
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Can you try the debug version of RefindPlus without hiding the banner in the conf and share the log? It can be used as a drop in replacement for the refind efi file. Just rename to match.
Summary is that simply deleting the line does not seem to be a proper solution since it does not cause an issue for others and additionally, the function is running successfully multiple times apart from that single instance.
That is, there is something with the setups where this issue exists that affects being able to free the allocated pool.
Not sure why, but instead of simply freeing the pool in one go, the function first tries to free that in "Image->PixelData" and then does "Image" as a whole. In X44, I commented out the Image->PixelData bit and freed it all in one go which seemed to work.
Not sure why Rod Smith set this up in this two-step way but sure he must have a good reason.
One odd thing I noted in your log is an absence of Console Control:
Unfortunately MyFreePool(Banner); doesn't seem to work, and I can't get it fixed by commenting out Image->PixelData stuff in egFreeImage() either. Could you maybe share the exact source you used for X44, which after numerous checks still works correctly (apart from the mysterious lag)?
Also from the limited research I did it seems that the egFreeImage() function in libeg/image.c comes actually from rEFIt that Rod's rEFInd is based on, but sadly there weren't any interesting commit messages to explain it.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
For the X44 test, all I did was to modify the egFreeImage function to just MyFreePool(Image) which is equivalent to calling MyFreePool(Banner) directly. Perhaps there are some other changes in RefindPlus that made it work.
Maybe best to just leave your proposal as is until Rod Smith has a chance to review and decide on the best way forward.
Last edit: dakanji 2020-11-30
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Looking closely, the structure for EG_EMBEDDED_IMAGE and EG_IMAGE are different. The egFreeImage function assumes the latter. This might also be playing a part.
Scrub that. Not relevant once run through egCreateImage.
Last edit: dakanji 2020-11-30
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Based on the current codebase but filters out setups without Console Control when freeing the PixelData pool. There is the REL version which doesn't produce a log if it works. It is WIP and a proper release will be sometime next week.
If/when this is sorted in rEFInd, the fix will be taken up later.
Last edit: dakanji 2020-11-30
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Perhaps but please continue in the thread you created on the subject.
You will need to get the specific commit where the issue cropped up with git bisect and post that to that thread. Then it will be clear whether easy to tackle or not.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
OK. But if you mean this topic, then this is a completely different problem.
I want the manual menu to have an exit command. However, apparently, there will be no answer ..
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Has anyone been able to get this working with a Mac Pro 7,1 (Rack 2019). I am using rEFInd and get past the boot manager but all of the boot options are showing a grey screen and not booting.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Do you mind trying RefindPlus and sharing the log?
Rename your existing rEFInd efi file
Place the efi file in the same folder
Rename the new file as the original rEFInd efi had
Reboot and a log file should be in the ESP
Also confirm whether it addresses your issue
Last edit: dakanji 2024-04-19
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi,
I run into a problem with rEFInd 0.12.0 in GNOME Boxes (qemu/kvm), which was an unresponsive blank screen with refind banner-logo without any menu entries. I managed to git-bisect it and created a WIP patch https://sourceforge.net/p/refind/code/merge-requests/30/ which contains more information, and found a couple of solutions I thought I'd share:
Either:
1. Hide the banner (logo) in refind.conf by adding line
hideui banner
2. Downgrade to 0.11.5
3. Build refind with my patch mentioned above
Hopefully somebody finds it helpful :)
Last edit: ignapk 2020-11-29
Can you try the debug version of RefindPlus without hiding the banner in the conf and share the log? It can be used as a drop in replacement for the refind efi file. Just rename to match.
You can get RefindPlus here: https://github.com/dakanji/RefindPlus/releases
Last edit: dakanji 2020-11-30
Sure, attached logs for both RefindPlus v0.12.0.L with banner (which reproduced the issue) and without (which was fine) for comparison, I didn't expect much else since your fork has the problematic line unchanged: https://github.com/dakanji/RefindPlus/blob/7cb2e1b8b91cb56485bae215903476ff88f0a705/refind/screen.c#L812 without that line, the problem seemingly disappears.
Its crashing on that line (trying to free the pool allocated to the image).
Deleting it a workaround but need to find out why exactly.
I have uploaded 3 variants of the current codebase.
Please swap each one, X42, X43 and X44, into your setup in turn and attach the logs.
Hopefully one of them works and I will advise you on how you can amend your merge request accordingly.
Last edit: dakanji 2020-11-30
X44 was slightly lagging input but worked! Attaching all three logs, thanks for helping with this
Last edit: ignapk 2020-11-29
Try using a custom banner with X43 and see what happens
X43 with https://1.bp.blogspot.com/-2XOoqzKg25s/Uwedh5shvdI/AAAAAAAAAfo/GJpMSXlhBv8/s1600/swlogo.png as a banner, still crashes
Thanks for the tests.
Summary is that simply deleting the line does not seem to be a proper solution since it does not cause an issue for others and additionally, the function is running successfully multiple times apart from that single instance.
That is, there is something with the setups where this issue exists that affects being able to free the allocated pool.
Not sure why, but instead of simply freeing the pool in one go, the function first tries to free that in "Image->PixelData" and then does "Image" as a whole. In X44, I commented out the Image->PixelData bit and freed it all in one go which seemed to work.
Not sure why Rod Smith set this up in this two-step way but sure he must have a good reason.
One odd thing I noted in your log is an absence of Console Control:
First time I have ever come across that and wonder if it is related.
Having said all that, you could revise your request for consideration as follows:
Instead of deleting the line, change it to
MyFreePool(Banner);
Last edit: dakanji 2020-11-29
Unfortunately
MyFreePool(Banner);
doesn't seem to work, and I can't get it fixed by commenting outImage->PixelData
stuff inegFreeImage()
either. Could you maybe share the exact source you used for X44, which after numerous checks still works correctly (apart from the mysterious lag)?Also from the limited research I did it seems that the
egFreeImage()
function in libeg/image.c comes actually from rEFIt that Rod's rEFInd is based on, but sadly there weren't any interesting commit messages to explain it.For the X44 test, all I did was to modify the egFreeImage function to just
MyFreePool(Image)
which is equivalent to callingMyFreePool(Banner)
directly. Perhaps there are some other changes in RefindPlus that made it work.Maybe best to just leave your proposal as is until Rod Smith has a chance to review and decide on the best way forward.
Last edit: dakanji 2020-11-30
Separate pools are allocated for Image and Image->PixelData in egCreateImage
Looking closely, the structure for
EG_EMBEDDED_IMAGE
andEG_IMAGE
are different. TheegFreeImage
function assumes the latter. This might also be playing a part.Scrub that. Not relevant once run through egCreateImage.
Last edit: dakanji 2020-11-30
Try the uploaded version and confirm if it works.
Based on the current codebase but filters out setups without Console Control when freeing the PixelData pool. There is the REL version which doesn't produce a log if it works. It is WIP and a proper release will be sometime next week.
If/when this is sorted in rEFInd, the fix will be taken up later.
Last edit: dakanji 2020-11-30
Thanks, X45 works like a charm (without previous input lag) \o/
Cool. Please share the log from the DBG version if you don't mind.
Here's the X45 log:
Workaround incorporated into RefindPlus v0.12.0.M: https://github.com/dakanji/RefindPlus/releases
RefindPlus v0.12.0.M
This menu does not work (refind_x64.efi this is RefindPlus v0.12.0.M and it is the main bootloader)
In version Refind 0.11.5 it works, in version Refind 0.12 it also does not work
Last edit: Viktor Ostapchuk 2020-12-08
RefindPlus is based on Refind 0.12.0 so behaviour can be expected to be similar.
A very handy thing. Can't you fix it, it shouldn't be difficult ?
Perhaps but please continue in the thread you created on the subject.
You will need to get the specific commit where the issue cropped up with git bisect and post that to that thread. Then it will be clear whether easy to tackle or not.
OK. But if you mean this topic, then this is a completely different problem.
I want the manual menu to have an exit command. However, apparently, there will be no answer ..
Has anyone been able to get this working with a Mac Pro 7,1 (Rack 2019). I am using rEFInd and get past the boot manager but all of the boot options are showing a grey screen and not booting.
Hi Michael,
Do you mind trying RefindPlus and sharing the log?
Rename your existing rEFInd efi file
Place the efi file in the same folder
Rename the new file as the original rEFInd efi had
Reboot and a log file should be in the ESP
Also confirm whether it addresses your issue
Last edit: dakanji 2024-04-19