microsoft/FASTER · error · FasterException

Overflow in AddressInfo - consider running the program in…

Error message

Overflow in AddressInfo - consider running the program in x64 mode for larger address space support

What it means

AddressInfo stores its address in a bit field of kAddressBits width. When a value larger than the address mask is written, the high bits are silently truncated; the setter detects this (value != Address) and throws FasterException("Overflow in AddressInfo" + ...) advising x64 mode on narrower builds. The address could not be represented, so proceeding would corrupt the record.

Solutions

  1. Build/run the application as x64 so kAddressBits is 64 and full offsets are encodable.
  2. Reduce device/log size below the 32-bit address ceiling, or use multiple smaller devices.
  3. Switch to a storage layout / epoch mode that does not use compact AddressInfo encoding for huge offsets.
  4. Monitor log tail address and checkpoint/compact before approaching the address-space limit.

Example fix

// before (project -> Platform target: x86)
new FasterLog(new FasterLogSettings { LogDevice = device, LogFileSize = 1L << 40 }); // overflow at large offsets

// after (project -> Platform target: x64)
new FasterLog(new FasterLogSettings { LogDevice = device, LogFileSize = 1L << 40 }); // 64-bit AddressInfo, no overflow
Defensive patterns

Strategy: validation

Validate before calling

// ensure the address fits in AddressInfo before use
bool AddressFits(long addr, int kAddressBits) => addr <= ((1L << kAddressBits) - 1);

Prevention

When it happens

Trigger: Setting AddressInfo.Address (or a property that routes through it) to a value > (1 << kAddressBits) - 1, e.g. a device/log offset beyond the encodable range on a 32-bit (kAddressBits < 64) build.

Common situations: Logs growing past the 32-bit address ceiling (~4GB) when running x86; huge log devices addressed with narrow AddressInfo; long-running services whose offsets accumulate past the limit.

Understand the failure class

Background: "value must be between 0 and 1" / "out of range" / "must not be negative" errors: fixing range-validation failures across open-source libraries — this error's family across 42 libraries.

Related errors


AI-assisted analysis of microsoft/FASTER@321d872eab (2026-09-15). Data as JSON: /api/errors/fc8245d187471a74. Report an issue: GitHub.

Appendix: source

Thrown at cs/src/core/Index/Common/AddressInfo.cs:89

                word = (IntPtr)_word;
            }
        }

        public long Address
        {
            readonly get
            {
                return (long)word & kAddressMask;
            }
            set
            {
                var _word = (long)word;
                _word &= ~kAddressMask;
                _word |= (value & kAddressMask);
                word = (IntPtr)_word;
                if (value != Address)
                {
                    throw new FasterException("Overflow in AddressInfo" + ((kAddressBits < 64) ? " - consider running the program in x64 mode for larger address space support" : ""));
                }
            }
        }
    }
}

View on GitHub (pinned to 321d872eab)