Menu

Fix for white screen with logo showing no entries

ignapk
2020-11-29
2024-10-18
1 2 > >> (Page 1 of 2)
  • ignapk

    ignapk - 2020-11-29

    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
  • dakanji

    dakanji - 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
  • dakanji

    dakanji - 2020-11-29

    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.

     
    👍
    1

    Last edit: dakanji 2020-11-30
  • ignapk

    ignapk - 2020-11-29

    X44 was slightly lagging input but worked! Attaching all three logs, thanks for helping with this

     
    👍
    1
  • ignapk

    ignapk - 2020-11-29
     

    Last edit: ignapk 2020-11-29
  • dakanji

    dakanji - 2020-11-29

    Try using a custom banner with X43 and see what happens

     
  • dakanji

    dakanji - 2020-11-29

    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:

      8:779   0:053    - Seek Console Control
      8:835   0:056      * Seek on ConsoleOut Handle ...Unsupported
      8:889   0:054      * Seek on Handle Buffer ...Not Found
      8:945   0:056      * Seek Directly ...Not Found
      9:000   0:054    - Assess Console Control ...NOT OK!
    

    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);

     
    👍
    1

    Last edit: dakanji 2020-11-29
  • ignapk

    ignapk - 2020-11-30

    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.

     
  • dakanji

    dakanji - 2020-11-30

    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
  • dakanji

    dakanji - 2020-11-30

    Not sure why Rod Smith set this up in this two-step way but sure he must have a good reason.

    Separate pools are allocated for Image and Image->PixelData in egCreateImage

     
  • dakanji

    dakanji - 2020-11-30

    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
  • dakanji

    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
  • ignapk

    ignapk - 2020-11-30

    Thanks, X45 works like a charm (without previous input lag) \o/

     
  • dakanji

    dakanji - 2020-11-30

    Cool. Please share the log from the DBG version if you don't mind.

     
  • ignapk

    ignapk - 2020-11-30

    Here's the X45 log:

     
    👍
    1
  • dakanji

    dakanji - 2020-12-08

    Workaround incorporated into RefindPlus v0.12.0.M: https://github.com/dakanji/RefindPlus/releases

     
    🎉
    1
  • Viktor Ostapchuk

    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)

    menuentry "Tools" {
        icon   \EFI\BOOT\icons\tool8.png
        loader \EFI\BOOT\refind_x64.efi
        options "-c \EFI\BOOT\efitools.conf"
    #   disabled
    }
    

    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
  • dakanji

    dakanji - 2020-12-08

    In version Refind 0.11.5 it works, in version Refind 0.12 it also does not work

    RefindPlus is based on Refind 0.12.0 so behaviour can be expected to be similar.

     
  • Viktor Ostapchuk

    A very handy thing. Can't you fix it, it shouldn't be difficult ?

     
  • dakanji

    dakanji - 2020-12-08

    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.

     
  • Viktor Ostapchuk

    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 ..

     
  • Michael Bauer

    Michael Bauer - 2022-03-25

    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.

     
  • dakanji

    dakanji - 2022-03-26

    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
1 2 > >> (Page 1 of 2)

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.