juan_gandhi: (Default)
Juan-Carlos Gandhi ([personal profile] juan_gandhi) wrote2016-12-31 09:56 am
Entry tags:

сюрпризы нашей кодобазы

Какой-то тест, вроде бы очевидный, то так, то так исполняется. И вот опять:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x000000010f7d2e3c, pid=76761, tid=0x0000000000001703
#
# JRE version: Java(TM) SE Runtime Environment (8.0_92-b14) (build 1.8.0_92-b14)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.92-b14 mixed mode bsd-amd64 compressed oops)
# Problematic frame:
# J 1812 C1 water.fvec.C8DChunk.isNA_impl(I)Z (14 bytes) @ 0x000000010f7d2e3c [0x000000010f7d2d80+0xbc]


Шо за wtf. Смотрю.

  @Override protected final boolean isNA_impl( int i ) { return Double.isNaN(UnsafeUtils.get8d(_mem,i<<3)); }


Клифятина хренова. При этом еще и нестабильная. Ну типа как память ляжет, байт на байт не приходится.

[personal profile] bamalip 2016-12-31 06:08 pm (UTC)(link)
Можно вывести человека из Си, но Си из человека - не всегда.

[personal profile] sassa_nf 2017-01-01 09:15 pm (UTC)(link)
Швидше за все, неправильний індекс. Він же тут ніде не перевіряє, що i в допустимих межах. Треба переписати на ByteBuffer, там є методи для доступу до double, і неправильний індекс буде кидати OutOfBoundsException
Edited 2017-01-01 21:18 (UTC)