Есть несколько зарезервированных полей в ntptimeval
и связанных с ними структурах:
struct ntptimeval
{
struct timeval time; /* current time (ro) */
long int maxerror; /* maximum error (us) (ro) */
long int esterror; /* estimated error (us) (ro) */
long int tai; /* TAI offset (ro) */
long int __glibc_reserved1;
long int __glibc_reserved2;
long int __glibc_reserved3;
long int __glibc_reserved4;
};
Которых у вас нет в вашем коде :
public class NTPTimeVal extends Structure {
public TimeVal time; /* Current time */
public Long maxerror; /* Maximum error */
public Long esterror;
public int tai;
}
Если эти зарезервированные поля будут использоваться в вашей версии glibc
, это может объяснить повреждение кучи.
Я бы также внимательно изучил данные, которые вы получите.Если некоторые поля содержат странные значения, это может означать проблему размера / выравнивания поля, что также может указывать на то, что структура короче, чем должна быть.