UB invoked by Fill from BDCSVD
Summary
Undefined behavior in BDCSVD<Eigen::MatrixXd, Eigen::ComputeThinU | Eigen::ComputeThinV> for a particular matrix may point to a bug.
Environment
- Operating System : Linux
- Architecture : x64
- Eigen Version : 3.3.9
- Compiler Version : clang version 17.0.6
-
Compile Flags :
-std=c++17 -O3 -g -fsanitize=undefined -fsanitize=integer -fsanitize=local-bounds -fno-omit-frame-pointer - Vector Extension : <I'm not sure what that is>
Minimal Example
I tried to recreate this in CE using eigen trunk, but it did not compile due to how I reproduced the matrix.
#include <iostream>
#include <stdlib.h>
#include "Eigen/Dense"
int main()
{
constexpr int input_rows = 10;
constexpr int input_cols = 100;
// make matrix
double* matrix;
matrix = (double*) malloc((input_rows*input_cols) * sizeof(double));
matrix[0] = 0.000000;
matrix[1] = 0.000000;
matrix[2] = 0.000000;
matrix[3] = 0.000000;
matrix[4] = 0.000000;
matrix[5] = 0.000000;
matrix[6] = 0.000000;
matrix[7] = 0.000000;
matrix[8] = 0.000000;
matrix[9] = 0.000000;
matrix[10] = 0.000000;
matrix[11] = 0.000000;
matrix[12] = 0.000000;
matrix[13] = 0.000000;
matrix[14] = 0.000000;
matrix[15] = 0.000000;
matrix[16] = 0.000000;
matrix[17] = 0.000000;
matrix[18] = 0.000000;
matrix[19] = 0.000000;
matrix[20] = 0.000000;
matrix[21] = 0.000000;
matrix[22] = 0.000000;
matrix[23] = 0.000000;
matrix[24] = 0.000000;
matrix[25] = 0.000000;
matrix[26] = 0.000000;
matrix[27] = 0.000000;
matrix[28] = 0.000000;
matrix[29] = 0.000000;
matrix[30] = 0.000000;
matrix[31] = 0.000000;
matrix[32] = 0.000000;
matrix[33] = 0.000000;
matrix[34] = 0.000000;
matrix[35] = 0.000000;
matrix[36] = 0.000000;
matrix[37] = 0.000000;
matrix[38] = 0.000000;
matrix[39] = 0.000000;
matrix[40] = 0.000000;
matrix[41] = 0.000000;
matrix[42] = 0.000000;
matrix[43] = 0.000000;
matrix[44] = 0.000000;
matrix[45] = 0.000000;
matrix[46] = 0.000000;
matrix[47] = 0.000000;
matrix[48] = 0.000000;
matrix[49] = 0.000000;
matrix[50] = 0.000000;
matrix[51] = 0.000000;
matrix[52] = 0.000000;
matrix[53] = 0.000000;
matrix[54] = 0.000000;
matrix[55] = 0.000000;
matrix[56] = 0.000000;
matrix[57] = 0.000000;
matrix[58] = 0.000000;
matrix[59] = 0.000000;
matrix[60] = 0.000000;
matrix[61] = 0.000000;
matrix[62] = 0.000000;
matrix[63] = 0.000000;
matrix[64] = 0.000000;
matrix[65] = 0.000000;
matrix[66] = 0.000000;
matrix[67] = 0.000000;
matrix[68] = 0.000000;
matrix[69] = 0.000000;
matrix[70] = 0.000000;
matrix[71] = 0.000000;
matrix[72] = 0.000000;
matrix[73] = 0.000000;
matrix[74] = 0.000000;
matrix[75] = 0.000000;
matrix[76] = 0.000000;
matrix[77] = 0.000000;
matrix[78] = 0.000000;
matrix[79] = 0.000000;
matrix[80] = 0.000000;
matrix[81] = 0.000000;
matrix[82] = 0.000000;
matrix[83] = 0.000000;
matrix[84] = 0.000000;
matrix[85] = 0.000000;
matrix[86] = 0.000000;
matrix[87] = 0.000000;
matrix[88] = 0.000000;
matrix[89] = 0.000000;
matrix[90] = 0.000000;
matrix[91] = 0.000000;
matrix[92] = 0.000000;
matrix[93] = 0.000000;
matrix[94] = 0.000000;
matrix[95] = 0.000000;
matrix[96] = 0.000000;
matrix[97] = 0.000000;
matrix[98] = 0.000000;
matrix[99] = 0.000000;
matrix[100] = 0.000000;
matrix[101] = 0.010101;
matrix[102] = 0.020408;
matrix[103] = 0.030927;
matrix[104] = 0.041664;
matrix[105] = 0.052625;
matrix[106] = 0.063816;
matrix[107] = 0.075243;
matrix[108] = 0.086912;
matrix[109] = 0.098829;
matrix[110] = 0.000000;
matrix[111] = 0.010101;
matrix[112] = 0.020408;
matrix[113] = 0.030927;
matrix[114] = 0.041664;
matrix[115] = 0.052625;
matrix[116] = 0.063816;
matrix[117] = 0.075243;
matrix[118] = 0.086912;
matrix[119] = 0.098829;
matrix[120] = 0.000000;
matrix[121] = 0.010101;
matrix[122] = 0.020408;
matrix[123] = 0.030927;
matrix[124] = 0.041664;
matrix[125] = 0.052625;
matrix[126] = 0.063816;
matrix[127] = 0.075243;
matrix[128] = 0.086912;
matrix[129] = 0.098829;
matrix[130] = 0.000000;
matrix[131] = 0.010101;
matrix[132] = 0.020408;
matrix[133] = 0.030927;
matrix[134] = 0.041664;
matrix[135] = 0.052625;
matrix[136] = 0.063816;
matrix[137] = 0.075243;
matrix[138] = 0.086912;
matrix[139] = 0.098829;
matrix[140] = 0.000000;
matrix[141] = 0.010101;
matrix[142] = 0.020408;
matrix[143] = 0.030927;
matrix[144] = 0.041664;
matrix[145] = 0.052625;
matrix[146] = 0.063816;
matrix[147] = 0.075243;
matrix[148] = 0.086912;
matrix[149] = 0.098829;
matrix[150] = 0.000000;
matrix[151] = 0.010101;
matrix[152] = 0.020408;
matrix[153] = 0.030927;
matrix[154] = 0.041664;
matrix[155] = 0.052625;
matrix[156] = 0.063816;
matrix[157] = 0.075243;
matrix[158] = 0.086912;
matrix[159] = 0.098829;
matrix[160] = 0.000000;
matrix[161] = 0.010101;
matrix[162] = 0.020408;
matrix[163] = 0.030927;
matrix[164] = 0.041664;
matrix[165] = 0.052625;
matrix[166] = 0.063816;
matrix[167] = 0.075243;
matrix[168] = 0.086912;
matrix[169] = 0.098829;
matrix[170] = 0.000000;
matrix[171] = 0.010101;
matrix[172] = 0.020408;
matrix[173] = 0.030927;
matrix[174] = 0.041664;
matrix[175] = 0.052625;
matrix[176] = 0.063816;
matrix[177] = 0.075243;
matrix[178] = 0.086912;
matrix[179] = 0.098829;
matrix[180] = 0.000000;
matrix[181] = 0.010101;
matrix[182] = 0.020408;
matrix[183] = 0.030927;
matrix[184] = 0.041664;
matrix[185] = 0.052625;
matrix[186] = 0.063816;
matrix[187] = 0.075243;
matrix[188] = 0.086912;
matrix[189] = 0.098829;
matrix[190] = 0.000000;
matrix[191] = 0.010101;
matrix[192] = 0.020408;
matrix[193] = 0.030927;
matrix[194] = 0.041664;
matrix[195] = 0.052625;
matrix[196] = 0.063816;
matrix[197] = 0.075243;
matrix[198] = 0.086912;
matrix[199] = 0.098829;
matrix[200] = 0.000000;
matrix[201] = 0.020408;
matrix[202] = 0.041664;
matrix[203] = 0.063816;
matrix[204] = 0.086912;
matrix[205] = 0.111000;
matrix[206] = 0.136128;
matrix[207] = 0.162344;
matrix[208] = 0.189696;
matrix[209] = 0.218232;
matrix[210] = 0.000000;
matrix[211] = 0.020408;
matrix[212] = 0.041664;
matrix[213] = 0.063816;
matrix[214] = 0.086912;
matrix[215] = 0.111000;
matrix[216] = 0.136128;
matrix[217] = 0.162344;
matrix[218] = 0.189696;
matrix[219] = 0.218232;
matrix[220] = 0.000000;
matrix[221] = 0.020408;
matrix[222] = 0.041664;
matrix[223] = 0.063816;
matrix[224] = 0.086912;
matrix[225] = 0.111000;
matrix[226] = 0.136128;
matrix[227] = 0.162344;
matrix[228] = 0.189696;
matrix[229] = 0.218232;
matrix[230] = 0.000000;
matrix[231] = 0.020408;
matrix[232] = 0.041664;
matrix[233] = 0.063816;
matrix[234] = 0.086912;
matrix[235] = 0.111000;
matrix[236] = 0.136128;
matrix[237] = 0.162344;
matrix[238] = 0.189696;
matrix[239] = 0.218232;
matrix[240] = 0.000000;
matrix[241] = 0.020408;
matrix[242] = 0.041664;
matrix[243] = 0.063816;
matrix[244] = 0.086912;
matrix[245] = 0.111000;
matrix[246] = 0.136128;
matrix[247] = 0.162344;
matrix[248] = 0.189696;
matrix[249] = 0.218232;
matrix[250] = 0.000000;
matrix[251] = 0.020408;
matrix[252] = 0.041664;
matrix[253] = 0.063816;
matrix[254] = 0.086912;
matrix[255] = 0.111000;
matrix[256] = 0.136128;
matrix[257] = 0.162344;
matrix[258] = 0.189696;
matrix[259] = 0.218232;
matrix[260] = 0.000000;
matrix[261] = 0.020408;
matrix[262] = 0.041664;
matrix[263] = 0.063816;
matrix[264] = 0.086912;
matrix[265] = 0.111000;
matrix[266] = 0.136128;
matrix[267] = 0.162344;
matrix[268] = 0.189696;
matrix[269] = 0.218232;
matrix[270] = 0.000000;
matrix[271] = 0.020408;
matrix[272] = 0.041664;
matrix[273] = 0.063816;
matrix[274] = 0.086912;
matrix[275] = 0.111000;
matrix[276] = 0.136128;
matrix[277] = 0.162344;
matrix[278] = 0.189696;
matrix[279] = 0.218232;
matrix[280] = 0.000000;
matrix[281] = 0.020408;
matrix[282] = 0.041664;
matrix[283] = 0.063816;
matrix[284] = 0.086912;
matrix[285] = 0.111000;
matrix[286] = 0.136128;
matrix[287] = 0.162344;
matrix[288] = 0.189696;
matrix[289] = 0.218232;
matrix[290] = 0.000000;
matrix[291] = 0.020408;
matrix[292] = 0.041664;
matrix[293] = 0.063816;
matrix[294] = 0.086912;
matrix[295] = 0.111000;
matrix[296] = 0.136128;
matrix[297] = 0.162344;
matrix[298] = 0.189696;
matrix[299] = 0.218232;
matrix[300] = 0.000000;
matrix[301] = 0.030927;
matrix[302] = 0.063816;
matrix[303] = 0.098829;
matrix[304] = 0.136128;
matrix[305] = 0.175875;
matrix[306] = 0.218232;
matrix[307] = 0.263361;
matrix[308] = 0.311424;
matrix[309] = 0.362583;
matrix[310] = 0.000000;
matrix[311] = 0.030927;
matrix[312] = 0.063816;
matrix[313] = 0.098829;
matrix[314] = 0.136128;
matrix[315] = 0.175875;
matrix[316] = 0.218232;
matrix[317] = 0.263361;
matrix[318] = 0.311424;
matrix[319] = 0.362583;
matrix[320] = 0.000000;
matrix[321] = 0.030927;
matrix[322] = 0.063816;
matrix[323] = 0.098829;
matrix[324] = 0.136128;
matrix[325] = 0.175875;
matrix[326] = 0.218232;
matrix[327] = 0.263361;
matrix[328] = 0.311424;
matrix[329] = 0.362583;
matrix[330] = 0.000000;
matrix[331] = 0.030927;
matrix[332] = 0.063816;
matrix[333] = 0.098829;
matrix[334] = 0.136128;
matrix[335] = 0.175875;
matrix[336] = 0.218232;
matrix[337] = 0.263361;
matrix[338] = 0.311424;
matrix[339] = 0.362583;
matrix[340] = 0.000000;
matrix[341] = 0.030927;
matrix[342] = 0.063816;
matrix[343] = 0.098829;
matrix[344] = 0.136128;
matrix[345] = 0.175875;
matrix[346] = 0.218232;
matrix[347] = 0.263361;
matrix[348] = 0.311424;
matrix[349] = 0.362583;
matrix[350] = 0.000000;
matrix[351] = 0.030927;
matrix[352] = 0.063816;
matrix[353] = 0.098829;
matrix[354] = 0.136128;
matrix[355] = 0.175875;
matrix[356] = 0.218232;
matrix[357] = 0.263361;
matrix[358] = 0.311424;
matrix[359] = 0.362583;
matrix[360] = 0.000000;
matrix[361] = 0.030927;
matrix[362] = 0.063816;
matrix[363] = 0.098829;
matrix[364] = 0.136128;
matrix[365] = 0.175875;
matrix[366] = 0.218232;
matrix[367] = 0.263361;
matrix[368] = 0.311424;
matrix[369] = 0.362583;
matrix[370] = 0.000000;
matrix[371] = 0.030927;
matrix[372] = 0.063816;
matrix[373] = 0.098829;
matrix[374] = 0.136128;
matrix[375] = 0.175875;
matrix[376] = 0.218232;
matrix[377] = 0.263361;
matrix[378] = 0.311424;
matrix[379] = 0.362583;
matrix[380] = 0.000000;
matrix[381] = 0.030927;
matrix[382] = 0.063816;
matrix[383] = 0.098829;
matrix[384] = 0.136128;
matrix[385] = 0.175875;
matrix[386] = 0.218232;
matrix[387] = 0.263361;
matrix[388] = 0.311424;
matrix[389] = 0.362583;
matrix[390] = 0.000000;
matrix[391] = 0.030927;
matrix[392] = 0.063816;
matrix[393] = 0.098829;
matrix[394] = 0.136128;
matrix[395] = 0.175875;
matrix[396] = 0.218232;
matrix[397] = 0.263361;
matrix[398] = 0.311424;
matrix[399] = 0.362583;
matrix[400] = 0.000000;
matrix[401] = 0.041664;
matrix[402] = 0.086912;
matrix[403] = 0.136128;
matrix[404] = 0.189696;
matrix[405] = 0.248000;
matrix[406] = 0.311424;
matrix[407] = 0.380352;
matrix[408] = 0.455168;
matrix[409] = 0.536256;
matrix[410] = 0.000000;
matrix[411] = 0.041664;
matrix[412] = 0.086912;
matrix[413] = 0.136128;
matrix[414] = 0.189696;
matrix[415] = 0.248000;
matrix[416] = 0.311424;
matrix[417] = 0.380352;
matrix[418] = 0.455168;
matrix[419] = 0.536256;
matrix[420] = 0.000000;
matrix[421] = 0.041664;
matrix[422] = 0.086912;
matrix[423] = 0.136128;
matrix[424] = 0.189696;
matrix[425] = 0.248000;
matrix[426] = 0.311424;
matrix[427] = 0.380352;
matrix[428] = 0.455168;
matrix[429] = 0.536256;
matrix[430] = 0.000000;
matrix[431] = 0.041664;
matrix[432] = 0.086912;
matrix[433] = 0.136128;
matrix[434] = 0.189696;
matrix[435] = 0.248000;
matrix[436] = 0.311424;
matrix[437] = 0.380352;
matrix[438] = 0.455168;
matrix[439] = 0.536256;
matrix[440] = 0.000000;
matrix[441] = 0.041664;
matrix[442] = 0.086912;
matrix[443] = 0.136128;
matrix[444] = 0.189696;
matrix[445] = 0.248000;
matrix[446] = 0.311424;
matrix[447] = 0.380352;
matrix[448] = 0.455168;
matrix[449] = 0.536256;
matrix[450] = 0.000000;
matrix[451] = 0.041664;
matrix[452] = 0.086912;
matrix[453] = 0.136128;
matrix[454] = 0.189696;
matrix[455] = 0.248000;
matrix[456] = 0.311424;
matrix[457] = 0.380352;
matrix[458] = 0.455168;
matrix[459] = 0.536256;
matrix[460] = 0.000000;
matrix[461] = 0.041664;
matrix[462] = 0.086912;
matrix[463] = 0.136128;
matrix[464] = 0.189696;
matrix[465] = 0.248000;
matrix[466] = 0.311424;
matrix[467] = 0.380352;
matrix[468] = 0.455168;
matrix[469] = 0.536256;
matrix[470] = 0.000000;
matrix[471] = 0.041664;
matrix[472] = 0.086912;
matrix[473] = 0.136128;
matrix[474] = 0.189696;
matrix[475] = 0.248000;
matrix[476] = 0.311424;
matrix[477] = 0.380352;
matrix[478] = 0.455168;
matrix[479] = 0.536256;
matrix[480] = 0.000000;
matrix[481] = 0.041664;
matrix[482] = 0.086912;
matrix[483] = 0.136128;
matrix[484] = 0.189696;
matrix[485] = 0.248000;
matrix[486] = 0.311424;
matrix[487] = 0.380352;
matrix[488] = 0.455168;
matrix[489] = 0.536256;
matrix[490] = 0.000000;
matrix[491] = 0.041664;
matrix[492] = 0.086912;
matrix[493] = 0.136128;
matrix[494] = 0.189696;
matrix[495] = 0.248000;
matrix[496] = 0.311424;
matrix[497] = 0.380352;
matrix[498] = 0.455168;
matrix[499] = 0.536256;
matrix[500] = 0.000000;
matrix[501] = 0.052625;
matrix[502] = 0.111000;
matrix[503] = 0.175875;
matrix[504] = 0.248000;
matrix[505] = 0.328125;
matrix[506] = 0.417000;
matrix[507] = 0.515375;
matrix[508] = 0.624000;
matrix[509] = 0.743625;
matrix[510] = 0.000000;
matrix[511] = 0.052625;
matrix[512] = 0.111000;
matrix[513] = 0.175875;
matrix[514] = 0.248000;
matrix[515] = 0.328125;
matrix[516] = 0.417000;
matrix[517] = 0.515375;
matrix[518] = 0.624000;
matrix[519] = 0.743625;
matrix[520] = 0.000000;
matrix[521] = 0.052625;
matrix[522] = 0.111000;
matrix[523] = 0.175875;
matrix[524] = 0.248000;
matrix[525] = 0.328125;
matrix[526] = 0.417000;
matrix[527] = 0.515375;
matrix[528] = 0.624000;
matrix[529] = 0.743625;
matrix[530] = 0.000000;
matrix[531] = 0.052625;
matrix[532] = 0.111000;
matrix[533] = 0.175875;
matrix[534] = 0.248000;
matrix[535] = 0.328125;
matrix[536] = 0.417000;
matrix[537] = 0.515375;
matrix[538] = 0.624000;
matrix[539] = 0.743625;
matrix[540] = 0.000000;
matrix[541] = 0.052625;
matrix[542] = 0.111000;
matrix[543] = 0.175875;
matrix[544] = 0.248000;
matrix[545] = 0.328125;
matrix[546] = 0.417000;
matrix[547] = 0.515375;
matrix[548] = 0.624000;
matrix[549] = 0.743625;
matrix[550] = 0.000000;
matrix[551] = 0.052625;
matrix[552] = 0.111000;
matrix[553] = 0.175875;
matrix[554] = 0.248000;
matrix[555] = 0.328125;
matrix[556] = 0.417000;
matrix[557] = 0.515375;
matrix[558] = 0.624000;
matrix[559] = 0.743625;
matrix[560] = 0.000000;
matrix[561] = 0.052625;
matrix[562] = 0.111000;
matrix[563] = 0.175875;
matrix[564] = 0.248000;
matrix[565] = 0.328125;
matrix[566] = 0.417000;
matrix[567] = 0.515375;
matrix[568] = 0.624000;
matrix[569] = 0.743625;
matrix[570] = 0.000000;
matrix[571] = 0.052625;
matrix[572] = 0.111000;
matrix[573] = 0.175875;
matrix[574] = 0.248000;
matrix[575] = 0.328125;
matrix[576] = 0.417000;
matrix[577] = 0.515375;
matrix[578] = 0.624000;
matrix[579] = 0.743625;
matrix[580] = 0.000000;
matrix[581] = 0.052625;
matrix[582] = 0.111000;
matrix[583] = 0.175875;
matrix[584] = 0.248000;
matrix[585] = 0.328125;
matrix[586] = 0.417000;
matrix[587] = 0.515375;
matrix[588] = 0.624000;
matrix[589] = 0.743625;
matrix[590] = 0.000000;
matrix[591] = 0.052625;
matrix[592] = 0.111000;
matrix[593] = 0.175875;
matrix[594] = 0.248000;
matrix[595] = 0.328125;
matrix[596] = 0.417000;
matrix[597] = 0.515375;
matrix[598] = 0.624000;
matrix[599] = 0.743625;
matrix[600] = 0.000000;
matrix[601] = 0.063816;
matrix[602] = 0.136128;
matrix[603] = 0.218232;
matrix[604] = 0.311424;
matrix[605] = 0.417000;
matrix[606] = 0.536256;
matrix[607] = 0.670488;
matrix[608] = 0.820992;
matrix[609] = 0.989064;
matrix[610] = 0.000000;
matrix[611] = 0.063816;
matrix[612] = 0.136128;
matrix[613] = 0.218232;
matrix[614] = 0.311424;
matrix[615] = 0.417000;
matrix[616] = 0.536256;
matrix[617] = 0.670488;
matrix[618] = 0.820992;
matrix[619] = 0.989064;
matrix[620] = 0.000000;
matrix[621] = 0.063816;
matrix[622] = 0.136128;
matrix[623] = 0.218232;
matrix[624] = 0.311424;
matrix[625] = 0.417000;
matrix[626] = 0.536256;
matrix[627] = 0.670488;
matrix[628] = 0.820992;
matrix[629] = 0.989064;
matrix[630] = 0.000000;
matrix[631] = 0.063816;
matrix[632] = 0.136128;
matrix[633] = 0.218232;
matrix[634] = 0.311424;
matrix[635] = 0.417000;
matrix[636] = 0.536256;
matrix[637] = 0.670488;
matrix[638] = 0.820992;
matrix[639] = 0.989064;
matrix[640] = 0.000000;
matrix[641] = 0.063816;
matrix[642] = 0.136128;
matrix[643] = 0.218232;
matrix[644] = 0.311424;
matrix[645] = 0.417000;
matrix[646] = 0.536256;
matrix[647] = 0.670488;
matrix[648] = 0.820992;
matrix[649] = 0.989064;
matrix[650] = 0.000000;
matrix[651] = 0.063816;
matrix[652] = 0.136128;
matrix[653] = 0.218232;
matrix[654] = 0.311424;
matrix[655] = 0.417000;
matrix[656] = 0.536256;
matrix[657] = 0.670488;
matrix[658] = 0.820992;
matrix[659] = 0.989064;
matrix[660] = 0.000000;
matrix[661] = 0.063816;
matrix[662] = 0.136128;
matrix[663] = 0.218232;
matrix[664] = 0.311424;
matrix[665] = 0.417000;
matrix[666] = 0.536256;
matrix[667] = 0.670488;
matrix[668] = 0.820992;
matrix[669] = 0.989064;
matrix[670] = 0.000000;
matrix[671] = 0.063816;
matrix[672] = 0.136128;
matrix[673] = 0.218232;
matrix[674] = 0.311424;
matrix[675] = 0.417000;
matrix[676] = 0.536256;
matrix[677] = 0.670488;
matrix[678] = 0.820992;
matrix[679] = 0.989064;
matrix[680] = 0.000000;
matrix[681] = 0.063816;
matrix[682] = 0.136128;
matrix[683] = 0.218232;
matrix[684] = 0.311424;
matrix[685] = 0.417000;
matrix[686] = 0.536256;
matrix[687] = 0.670488;
matrix[688] = 0.820992;
matrix[689] = 0.989064;
matrix[690] = 0.000000;
matrix[691] = 0.063816;
matrix[692] = 0.136128;
matrix[693] = 0.218232;
matrix[694] = 0.311424;
matrix[695] = 0.417000;
matrix[696] = 0.536256;
matrix[697] = 0.670488;
matrix[698] = 0.820992;
matrix[699] = 0.989064;
matrix[700] = 0.000000;
matrix[701] = 0.075243;
matrix[702] = 0.162344;
matrix[703] = 0.263361;
matrix[704] = 0.380352;
matrix[705] = 0.515375;
matrix[706] = 0.670488;
matrix[707] = 0.847749;
matrix[708] = 1.049216;
matrix[709] = 1.276947;
matrix[710] = 0.000000;
matrix[711] = 0.075243;
matrix[712] = 0.162344;
matrix[713] = 0.263361;
matrix[714] = 0.380352;
matrix[715] = 0.515375;
matrix[716] = 0.670488;
matrix[717] = 0.847749;
matrix[718] = 1.049216;
matrix[719] = 1.276947;
matrix[720] = 0.000000;
matrix[721] = 0.075243;
matrix[722] = 0.162344;
matrix[723] = 0.263361;
matrix[724] = 0.380352;
matrix[725] = 0.515375;
matrix[726] = 0.670488;
matrix[727] = 0.847749;
matrix[728] = 1.049216;
matrix[729] = 1.276947;
matrix[730] = 0.000000;
matrix[731] = 0.075243;
matrix[732] = 0.162344;
matrix[733] = 0.263361;
matrix[734] = 0.380352;
matrix[735] = 0.515375;
matrix[736] = 0.670488;
matrix[737] = 0.847749;
matrix[738] = 1.049216;
matrix[739] = 1.276947;
matrix[740] = 0.000000;
matrix[741] = 0.075243;
matrix[742] = 0.162344;
matrix[743] = 0.263361;
matrix[744] = 0.380352;
matrix[745] = 0.515375;
matrix[746] = 0.670488;
matrix[747] = 0.847749;
matrix[748] = 1.049216;
matrix[749] = 1.276947;
matrix[750] = 0.000000;
matrix[751] = 0.075243;
matrix[752] = 0.162344;
matrix[753] = 0.263361;
matrix[754] = 0.380352;
matrix[755] = 0.515375;
matrix[756] = 0.670488;
matrix[757] = 0.847749;
matrix[758] = 1.049216;
matrix[759] = 1.276947;
matrix[760] = 0.000000;
matrix[761] = 0.075243;
matrix[762] = 0.162344;
matrix[763] = 0.263361;
matrix[764] = 0.380352;
matrix[765] = 0.515375;
matrix[766] = 0.670488;
matrix[767] = 0.847749;
matrix[768] = 1.049216;
matrix[769] = 1.276947;
matrix[770] = 0.000000;
matrix[771] = 0.075243;
matrix[772] = 0.162344;
matrix[773] = 0.263361;
matrix[774] = 0.380352;
matrix[775] = 0.515375;
matrix[776] = 0.670488;
matrix[777] = 0.847749;
matrix[778] = 1.049216;
matrix[779] = 1.276947;
matrix[780] = 0.000000;
matrix[781] = 0.075243;
matrix[782] = 0.162344;
matrix[783] = 0.263361;
matrix[784] = 0.380352;
matrix[785] = 0.515375;
matrix[786] = 0.670488;
matrix[787] = 0.847749;
matrix[788] = 1.049216;
matrix[789] = 1.276947;
matrix[790] = 0.000000;
matrix[791] = 0.075243;
matrix[792] = 0.162344;
matrix[793] = 0.263361;
matrix[794] = 0.380352;
matrix[795] = 0.515375;
matrix[796] = 0.670488;
matrix[797] = 0.847749;
matrix[798] = 1.049216;
matrix[799] = 1.276947;
matrix[800] = 0.000000;
matrix[801] = 0.086912;
matrix[802] = 0.189696;
matrix[803] = 0.311424;
matrix[804] = 0.455168;
matrix[805] = 0.624000;
matrix[806] = 0.820992;
matrix[807] = 1.049216;
matrix[808] = 1.311744;
matrix[809] = 1.611648;
matrix[810] = 0.000000;
matrix[811] = 0.086912;
matrix[812] = 0.189696;
matrix[813] = 0.311424;
matrix[814] = 0.455168;
matrix[815] = 0.624000;
matrix[816] = 0.820992;
matrix[817] = 1.049216;
matrix[818] = 1.311744;
matrix[819] = 1.611648;
matrix[820] = 0.000000;
matrix[821] = 0.086912;
matrix[822] = 0.189696;
matrix[823] = 0.311424;
matrix[824] = 0.455168;
matrix[825] = 0.624000;
matrix[826] = 0.820992;
matrix[827] = 1.049216;
matrix[828] = 1.311744;
matrix[829] = 1.611648;
matrix[830] = 0.000000;
matrix[831] = 0.086912;
matrix[832] = 0.189696;
matrix[833] = 0.311424;
matrix[834] = 0.455168;
matrix[835] = 0.624000;
matrix[836] = 0.820992;
matrix[837] = 1.049216;
matrix[838] = 1.311744;
matrix[839] = 1.611648;
matrix[840] = 0.000000;
matrix[841] = 0.086912;
matrix[842] = 0.189696;
matrix[843] = 0.311424;
matrix[844] = 0.455168;
matrix[845] = 0.624000;
matrix[846] = 0.820992;
matrix[847] = 1.049216;
matrix[848] = 1.311744;
matrix[849] = 1.611648;
matrix[850] = 0.000000;
matrix[851] = 0.086912;
matrix[852] = 0.189696;
matrix[853] = 0.311424;
matrix[854] = 0.455168;
matrix[855] = 0.624000;
matrix[856] = 0.820992;
matrix[857] = 1.049216;
matrix[858] = 1.311744;
matrix[859] = 1.611648;
matrix[860] = 0.000000;
matrix[861] = 0.086912;
matrix[862] = 0.189696;
matrix[863] = 0.311424;
matrix[864] = 0.455168;
matrix[865] = 0.624000;
matrix[866] = 0.820992;
matrix[867] = 1.049216;
matrix[868] = 1.311744;
matrix[869] = 1.611648;
matrix[870] = 0.000000;
matrix[871] = 0.086912;
matrix[872] = 0.189696;
matrix[873] = 0.311424;
matrix[874] = 0.455168;
matrix[875] = 0.624000;
matrix[876] = 0.820992;
matrix[877] = 1.049216;
matrix[878] = 1.311744;
matrix[879] = 1.611648;
matrix[880] = 0.000000;
matrix[881] = 0.086912;
matrix[882] = 0.189696;
matrix[883] = 0.311424;
matrix[884] = 0.455168;
matrix[885] = 0.624000;
matrix[886] = 0.820992;
matrix[887] = 1.049216;
matrix[888] = 1.311744;
matrix[889] = 1.611648;
matrix[890] = 0.000000;
matrix[891] = 0.086912;
matrix[892] = 0.189696;
matrix[893] = 0.311424;
matrix[894] = 0.455168;
matrix[895] = 0.624000;
matrix[896] = 0.820992;
matrix[897] = 1.049216;
matrix[898] = 1.311744;
matrix[899] = 1.611648;
matrix[900] = 0.000000;
matrix[901] = 0.098829;
matrix[902] = 0.218232;
matrix[903] = 0.362583;
matrix[904] = 0.536256;
matrix[905] = 0.743625;
matrix[906] = 0.989064;
matrix[907] = 1.276947;
matrix[908] = 1.611648;
matrix[909] = 1.997541;
matrix[910] = 0.000000;
matrix[911] = 0.098829;
matrix[912] = 0.218232;
matrix[913] = 0.362583;
matrix[914] = 0.536256;
matrix[915] = 0.743625;
matrix[916] = 0.989064;
matrix[917] = 1.276947;
matrix[918] = 1.611648;
matrix[919] = 1.997541;
matrix[920] = 0.000000;
matrix[921] = 0.098829;
matrix[922] = 0.218232;
matrix[923] = 0.362583;
matrix[924] = 0.536256;
matrix[925] = 0.743625;
matrix[926] = 0.989064;
matrix[927] = 1.276947;
matrix[928] = 1.611648;
matrix[929] = 1.997541;
matrix[930] = 0.000000;
matrix[931] = 0.098829;
matrix[932] = 0.218232;
matrix[933] = 0.362583;
matrix[934] = 0.536256;
matrix[935] = 0.743625;
matrix[936] = 0.989064;
matrix[937] = 1.276947;
matrix[938] = 1.611648;
matrix[939] = 1.997541;
matrix[940] = 0.000000;
matrix[941] = 0.098829;
matrix[942] = 0.218232;
matrix[943] = 0.362583;
matrix[944] = 0.536256;
matrix[945] = 0.743625;
matrix[946] = 0.989064;
matrix[947] = 1.276947;
matrix[948] = 1.611648;
matrix[949] = 1.997541;
matrix[950] = 0.000000;
matrix[951] = 0.098829;
matrix[952] = 0.218232;
matrix[953] = 0.362583;
matrix[954] = 0.536256;
matrix[955] = 0.743625;
matrix[956] = 0.989064;
matrix[957] = 1.276947;
matrix[958] = 1.611648;
matrix[959] = 1.997541;
matrix[960] = 0.000000;
matrix[961] = 0.098829;
matrix[962] = 0.218232;
matrix[963] = 0.362583;
matrix[964] = 0.536256;
matrix[965] = 0.743625;
matrix[966] = 0.989064;
matrix[967] = 1.276947;
matrix[968] = 1.611648;
matrix[969] = 1.997541;
matrix[970] = 0.000000;
matrix[971] = 0.098829;
matrix[972] = 0.218232;
matrix[973] = 0.362583;
matrix[974] = 0.536256;
matrix[975] = 0.743625;
matrix[976] = 0.989064;
matrix[977] = 1.276947;
matrix[978] = 1.611648;
matrix[979] = 1.997541;
matrix[980] = 0.000000;
matrix[981] = 0.098829;
matrix[982] = 0.218232;
matrix[983] = 0.362583;
matrix[984] = 0.536256;
matrix[985] = 0.743625;
matrix[986] = 0.989064;
matrix[987] = 1.276947;
matrix[988] = 1.611648;
matrix[989] = 1.997541;
matrix[990] = 0.000000;
matrix[991] = 0.098829;
matrix[992] = 0.218232;
matrix[993] = 0.362583;
matrix[994] = 0.536256;
matrix[995] = 0.743625;
matrix[996] = 0.989064;
matrix[997] = 1.276947;
matrix[998] = 1.611648;
matrix[999] = 1.997541;
// make map
Eigen::Map<Eigen::MatrixXd> eigen_input{matrix, 10, 100};
// default construct svd
Eigen::BDCSVD<Eigen::MatrixXd, Eigen::ComputeThinU | Eigen::ComputeThinV> eigen_svd;
eigen_svd.setThreshold(1.0e-10);
// compute
eigen_svd.compute(eigen_input);
free(matrix);
return 0;
}
Steps to reproduce
- Save the above code as
eigen_ub.cpp - Save the following into
ubsan.supp
implicit-integer-sign-change:PacketMath.h
unsigned-integer-overflow:random.tcc
- Compile
clang++ -std=c++17 -O3 -g -fsanitize=undefined -fsanitize=integer -fsanitize=local-bounds -fno-omit-frame-pointer -isystem./include/eigen3 -c eigen_ub.cpp -o eigen_ub.o
- Link
clang++ -O3 -g -fsanitize=undefined -fsanitize=integer -fsanitize=local-bounds -o eigen_ub.exe eigen_ub.o -ldl
- Run with ubsan
UBSAN_OPTIONS=suppressions=ubsan.supp:print_stacktrace=1:report_error_type=1 eigen_ub.exe
What is the current bug behavior?
I ran into this while testing some matrices. The particular matrix above triggered this UB in Fill, which does not happen for other matrices of the same size. I raise this issue as it might be a symptom of a problem waiting to cause issues down the road.
../../../install/eigen_cpu/include/eigen3/Eigen/src/Core/Fill.h:87:12: runtime error: null pointer passed as argument 1, which is declared to never be null
/usr/include/string.h:61:62: note: nonnull attribute specified here
#0 0x46f93e in Eigen::internal::eigen_zero_impl<Eigen::Block<Eigen::Matrix<double, -1, 1, 0, -1, 1>, -1, 1, false>, true>::run(Eigen::Block<Eigen::Matrix<double, -1, 1, 0, -1, 1>, -1, 1, false>&) /usr/workspace/boba_dev/boba_tpl_build_farms/nov_2024/examples/reproducers/eigen_ub/../../../install/eigen_cpu/include/eigen3/Eigen/src/Core/Fill.h:87:5
#1 0x46f93e in Eigen::DenseBase<Eigen::Block<Eigen::Matrix<double, -1, 1, 0, -1, 1>, -1, 1, false>>::setZero() /usr/workspace/boba_dev/boba_tpl_build_farms/nov_2024/examples/reproducers/eigen_ub/../../../install/eigen_cpu/include/eigen3/Eigen/src/Core/CwiseNullaryOp.h:551:3
#2 0x46b8c8 in Eigen::BDCSVD<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 40>::compute_impl(Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, unsigned int) /usr/workspace/boba_dev/boba_tpl_build_farms/nov_2024/examples/reproducers/eigen_ub/../../../install/eigen_cpu/include/eigen3/Eigen/src/SVD/BDCSVD.h:380:49
#3 0x43a43e in Eigen::BDCSVD<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 40>::compute(Eigen::Matrix<double, -1, -1, 0, -1, -1> const&) /usr/workspace/boba_dev/boba_tpl_build_farms/nov_2024/examples/reproducers/eigen_ub/../../../install/eigen_cpu/include/eigen3/Eigen/src/SVD/BDCSVD.h:194:54
#4 0x43a43e in main /usr/workspace/boba_dev/boba_tpl_build_farms/nov_2024/examples/reproducers/eigen_ub/eigen_ub.cpp:1031:15
#5 0x155553e157e4 in __libc_start_main (/lib64/libc.so.6+0x3a7e4) (BuildId: 37e4ac6a7fb96950b0e6bf72d73d94f3296c77eb)
#6 0x403cdd in _start (/usr/WS1/boba_dev/boba_tpl_build_farms/nov_2024/examples/reproducers/eigen_ub/eigen_ub.exe+0x403cdd) (BuildId: cfe933cbb95a9e08c52c8e77909a94ab360e2d52)
SUMMARY: UndefinedBehaviorSanitizer: invalid-null-argument ../../../install/eigen_cpu/include/eigen3/Eigen/src/Core/Fill.h:87:12
What is the expected correct behavior?
Fix the call to the function in Fill to not have the null as required by the attributes.
Relevant logs
Posted above
Anything else that might help
- This issue was flagged by my ub sanitizer tests when I updated from
c2f15edc43367c3a11aacbb51c7431ccb5a31bb5to8ad4344ca79f2f248bc5ed70eec72e4b9c4d5e88
Edited by pguthrey