Let's be clear. Receiving an error message when trying to use chain.c32 does *not
* mean that there is a bug in chain.c32 each and every time.
As originally stated by Icecube in this same topic:
In newer versions of Syslinux (chain.c32), the boot sector of the partition is also loaded to memory. So now you have to specify the partition number too
So using an adequate 'append' line should be checked first.
For example, the following boot code:
MENU LABEL blah blah
APPEND fs ntldr=/bootmgr
could result in a valid error message such as (for example):
Insane primary (MBR) partition.
Can't find myself on the drive I booted from.
There are cases where the above error message is valid, not related to potential bugs in chain.c32.
One reason for such error messages can be a BIOS bug. Typically, a USB drive plugged in one system might work correctly, while using the same exact USB drive plugged into a completely different system (different system brand, different BIOS brand) might result in an error message.
So updating the BIOS whenever possible should be a first step, and by testing the same USB drive in different systems could indicate whether the problem is related to BIOS or to chain.c32 (or to something else).
Some (newer) versions of chain.c32 include an optional "relax" parameter. This might be also helpful for testing. But beware that the intention of this parameter is to help testing (narrowing down the reasons for some problems), and should not be used as a workaround. In other words, if the only way to successfully boot with chain.c32 is by means of "relax", then the user takes the risk of screwing the data. No complaints should be directed to anyone else.
Whichever the case, feedback is useful and appreciated.