I'm in the process of reorganizing some of the legacy libraries in our application which has unmanaged code calling into libraries of managed code. While I have the codereorganized, it produces the following loader error:
I believe 0xc0000018 error is an overlapping address range. So, I have two questions. First, what linker options may cause this error? I'm currently linking with /DYNAMICBASE:NO and /FIXED:No as this was how some of the previous libraries were set up.
Second, is there a way to turn on verbose mode for the loader so I can see what exactly it's trying to load? P9842 is a third party library so I imagine it is getting to one of my libraries after P9842 and failing on that one. Can I narrow it down? Thanks.
Don't know about the first question. A search for that status code hit this article with the interesting note that "Before XP there was no check in Windows for page mappings with different memory types. Windows XP does check though. A second memory type mapping attempt will fail with the STATUS_CONFLICTING_ADDRESSES (0xc0000018) error message." Might be relevant if you are using MapViewOfFile...
Your DllMain function runs inside the loader lock, one of the few times the OS lets you run code while one of its internal locks is held. This means that you must be extra careful not to violate a lock hierarchy in your DllMain; otherwise, you are asking for a deadlock.
The loader lock is taken by any function that needs to access the list of DLLs loaded into the process. This includes functions like GetModuleHandle and GetModuleFileName. If your DllMain enters a critical section or waits on a synchronization object, and that critical section or synchronization object is owned by some code that is in turn waiting for the loader lock, you just created a deadlock:
Loader refers to the OS (module) loader.Loader Lock is a system lock used by the loader to synchronize calls to DllMain.This way, the loader ensures that initialization / cleanup tasks required by DLLs are performed in a thread-safe manner.
(...) the operating system has its own internal process-specific lock that sometimes is held while your code executes. This lock is acquired when DLLs are loaded into the process, and is therefore called the 'loader lock.' The DllMain function always executes under the loader lock; (...)
How are you setting your EFI variables? I was having a similar issue and was blaming it on Windows. I had been using efibootmgr to set my variables, and all would be fine until I booted Windows, and it would change. I later configured it using the firmware setup tools for my HP Envy (often mistakenly called BIOS set up) and I have not had any problems with it reverting. I am wondering if there is something about how the variables are configured by efibootmgr that Windows does not like causing Windows to take initiative and "fix" it. Conversely, perhaps the firmware tools intrinsic to the laptop set the variables to Windows liking. As I almost never boot to Windows, I really don't care much. Also, I do not use a boot loader -- I just use the efistub capability of the kernel. Windows will exist on my laptop until the day after the laptop warranty expires.
Nothing is too wonderful to be true, if it be consistent with the laws of nature -- Michael Faraday
Sometimes it is the people no one can imagine anything of who do the things no one can imagine. -- Alan Turing
---
How to Ask Questions the Smart Way
On this particular machine, I boot into Windows probably 2/3rds of the time. (I have another tower and a lappie that are almost exclusively Arch.) It's the Adobe Syndrome (ie, PS, InD, Ill) that keeps me booting into Win7 (Oh, Quicken, too.). I had a perfectly working dual-boot system--until a couple of weeks ago when something got seriously borked. It had been a couple of years, anyway--overdue for a Win re-install.
A while back, I installed Windows 8 on my MacBook Air (mid 2013 model) using Bootcamp. It never really worked, (it would freeze all the time, the WiFi would cut in and out, etc.) so I got rid of it. I tried to do this through Bootcamp again, but for whatever reason this didn't work, so I booted up on a live Ubuntu USB and manually erased the NTFS partition for Windows.
Once back in OS X (Mavericks, but it was Mountain Lion when I installed Windows), I expended the default HFS+ partition to fill the full space of the SSD. So now I've got a nearly out-of-box Macintosh HD partition; everything on the Mac side works fine.
But lately, I find myself getting increasingly annoyed at the BSD coreutils among other things, and so I'd like to be able to dual boot into some version of Linux (probably Ubuntu or Xubuntu, but this is kind of arbitrary).
So but it turns out that when I "uninstalled" the Windows partition, something didn't quite update in the boot loader (I'm kind of fuzzy on my knowledge of the difference between a boot loader and a boot manager, so I might be using these terms incorrectly). When I start up my Mac holding down option, I get the following...
Now navigate to /Volumes/efi/EFI. This directory is supposed to only contain an APPLE directory. On a machine where I had Windows installed, it also contained a Microsoft and Boot directory. These can be safely removed, but for extra safety I would recommend renaming them to something different instead.
In the end, I gave up on actually removing the entries from wherever they're stored on the bootloader. Instead, I just installed rEFInd and manually removed the entries from the bootloader. I chose to go this route because after installing Xubuntu, this was the only way that my mac could find the xubuntu bootup file and also rEFInd has a feature where you can specify which entries you want to display and which you don't.
DisplayCAL (argyllcms) LUT loader can load calibration data to LUT at the highest precision available for that HW, so a video card with more that 8bit/entry LUTs and dithering at its output can show smooth gradients like a display with internal HW calibration.
2-There are apps, full screen apps mostly, that reset video card LUTs. DisplayCAL reloads periodically LUTs to ensure calibration is not reset to no calibration. There is no OS notification queue for such changes, if one app resets LUTs, DisplayCAL cannot notice it. Hence it reloads it periodically.
Say that my only goal with calibration/profile was to get Adobe Lightroom to display colors more accurately (since my monitor is Wide Gamut and colors look more vivid than what they really are). I use DisplayCAL to calibrate my monitor R/G/B controls and generate a color profile that I use to configure my OS settings for my single monitor. Lightroom will then ask the OS for color profiles and display colors more accurately.
I installed a Linux (Fedora) as second OS. I did like that so many times but with other distros. After installing I tried to boot in my first OS (Windows 11), but in a grub I didn't see her. I tried to re-install my Windows, when I went to BIOS, I couldn't boot in my flash drive and all UEFI ways to boot are gone. Now I'm sitting without my Windows and I can't install something else. Also I tried to update the grub, add some parameters in a config file and etc. If I try to boot in the windows (in one of my pictures you can see), then it boots me in the grub and after that I can't load my distro.
Before installing Fedora, every time when I got any error from installer, I was trying to boot through selecting a EFI file and it always worked - I tried this way to solve the problem and it's doesn't work.
The root cause is that you did not boot the Fedora installer in UEFI mode, but in legacy BIOS mode. It has written a legacy BIOS-style MBR on your disk, and apparently your system firmware (currently?) prefers booting in legacy mode over UEFI mode. If it sees a disk that is bootable in both modes, it will pick the legacy mode, which is the wrong choice for your existing Windows 11 installation.
One way would be to destroy the MBR boot code so the system firmware will have no choice but to boot in UEFI mode. You could do that by booting Linux from some external live media, and writing zeroes to the first 440 bytes of the Master Boot Record of the hard disk, like this:
If you do this, be very careful: any mistakes in this command could cause further destruction. Also, when booting from external media, the system disk might get a different device name, so make sure you're targeting the correct disk and adjust the /dev/sda part of the command if needed.
To fix your existing Fedora installation, you could boot from an external live Linux media, mount the root filesystem of your Fedora installation, chroot into it, then remove the grub2-pc-.x86_64.rpm package (the version of GRUB for booting in legacy BIOS style) and install grub2-efi-.x86_64.rpm instead. To be compatible with Secure Boot, you probably should also install the shim-.x86_64.rpm package. Then you should mount the EFI system partition /dev/sda1 at /boot/efi, and run grub2-install --target=x86_64-efi /dev/sda to explicitly install a UEFI version of GRUB.
If your live media failed to boot in UEFI mode, grub2-install might display an error message, because it won't be able to access UEFI boot variables. But it should still have installed the UEFI GRUB, so you should then be able to boot by selecting Boot from EFI File and selecting \EFI\Fedora\shimx64.efi (Secure Boot-compatible) or \EFI\Fedora\grubx64.efi (with Secure Boot disabled).
Once you have the system booted to Fedora in UEFI mode, you could just re-run grub2-install --target=x86_64-efi /dev/sda to create the necessary UEFI boot variable, or install the efibootmgr package and use it to configure the UEFI boot variables yourself.
7fc3f7cf58