ticket summary component version milestone type owner status created _changetime _description _reporter 13645 boost::geometry::simplify broken in 1.67 geometry Boost 1.67.0 To Be Determined Bugs Barend Gehrels new 2018-07-28T18:51:42Z 2018-07-28T19:09:12Z "bg::simplify is broken in version 1.67. In version 1.66, it works fine. This is the code that I ran: std::cout << ""Ring is: "" << bg::wkt(*ring) << std::endl; std::cout << ""Tolerance is: "" << mill->tolerance; toolpath_optimised.push_back(make_shared()); bg::simplify(*ring, *(toolpath_optimised.back()), mill->tolerance); std::cout << ""Simplified result is: "" << bg::wkt(*(toolpath_optimised.back())) << std::endl; With boost 1.66, the first coordinate of the input and the first coordinate of the output are the same. With 1.67, the first coordinate of the input and the first coordinate of the output are not the same. This is incorrect behavior. Notice in the output below. 1.66 stdout: POLYGON((1.20884 3.81395,1.19293 3.84469,1.1663 3.89695,1.13837 3.9535,1.11221 4.01006,1.08784 4.06661,1.06524 4.12317,1.04518 4.17544,1.02628 4.22659,1.00887 4.27775,0.99294 4.3289,0.978492 4.38006,0.964488 4.43232,0.952375 4.47996,0.941568 4.5276,0.932065 4.57524,0.923868 4.62288,0.91559 4.67514,0.908966 4.72079,0.903551 4.76643,0.899345 4.81207,0.896348 4.85771,0.893609 4.90997,0.891839 4.95499,0.89125 5,0.891839 5.04501,0.893609 5.09003,0.896348 5.14229,0.899345 5.18793,0.903551 5.23357,0.908966 5.27921,0.91559 5.32486,0.923868 5.37712,0.932065 5.42476,0.941568 5.4724,0.952375 5.52004,0.964488 5.56768,0.978492 5.61994,0.99294 5.6711,1.00887 5.72225,1.02628 5.77341,1.04518 5.82456,1.06524 5.87683,1.08784 5.93338,1.11221 5.98993,1.13836 6.04648,1.16629 6.10304,1.19292 6.1553,1.22687 6.21973,1.26309 6.28417,1.30155 6.3486,1.34227 6.41304,1.37621 6.4653,1.42695 6.54109,1.48072 6.61688,1.53754 6.69267,1.59739 6.76846,1.63972 6.82073,1.67765 6.86689,1.71667 6.91305,1.75679 6.9592,1.79801 7.00536,1.84033 7.05152,1.88375 7.09768,1.97387 7.19,2.02613 7.24226,2.11566 7.32986,2.20903 7.41746,2.30626 7.50507,2.40733 7.59267,2.52209 7.582,2.57436 7.57651,2.69697 7.56203,2.81959 7.54438,2.94221 7.52354,3.06483 7.49953,3.04552 7.41246,3.0034 7.21862,2.9966 7.18665,2.99153 7.16271,2.76836 6.10662,2.76698 6.10013,2.76489 6.09027,2.74216 5.97705,2.6906 5.70316,2.68837 5.69147,2.67984 5.6473,2.67213 5.60519,2.66543 5.564,2.65315 5.48319,2.65167 5.47366,2.63996 5.39965,2.63532 5.36774,2.63159 5.33635,2.63138 5.33435,2.6307 5.32801,2.62318 5.26016,2.61595 5.2276,2.60164 5.168,2.5906 5.12662,2.57778 5.08701,2.55845 5.03242,2.54629 5.00067,2.53279 4.97027,2.50892 4.92023,2.49607 4.89498,2.48215 4.87082,2.45406 4.82499,2.44052 4.80413,2.42605 4.78419,2.39396 4.74237,2.37944 4.72443,2.36407 4.70735,2.32808 4.66943,2.31204 4.65339,2.29516 4.6382,2.2553 4.60415,2.23694 4.58929,2.21769 4.57531,2.17388 4.54521,2.15204 4.53104,2.1292 4.51786,2.08948 4.4963,2.08131 4.49177,2.02613 4.46059,2 4.44505,1.97387 4.42796,1.89344 4.37298,1.86199 4.3507,1.83015 4.32662,1.67482 4.2054,1.63047 4.17003,1.58508 4.13234,1.20884 3.81395,1.22146 3.7599,1.23538 3.70586,1.2506 3.65182,1.26713 3.59778,1.28496 3.54373,1.30409 3.48969,1.32452 3.43565,1.34625 3.38161,1.36696 3.33161,1.39856 3.25817,1.43253 3.18474,1.46887 3.1113,1.50757 3.03787,1.54864 2.96443,1.59208 2.891,1.63788 2.81756,1.68606 2.74413,1.73659 2.67069,1.7895 2.59726,1.84477 2.52382,1.90241 2.45039,1.96242 2.37695,2.0248 2.30352,2.08954 2.23008,2.15665 2.15665,2.26607 2.15409,2.3755 2.15435,2.48493 2.15744,2.59435 2.16335,2.70378 2.17208,2.8132 2.18363,2.92263 2.19801,3.03206 2.2152,3.14148 2.23522,3.25091 2.25806,3.36033 2.28373,3.46976 2.31221,3.57918 2.34352,3.68861 2.37765,3.79804 2.4146,3.90746 2.45438,3.77286 2.81292,3.72912 2.9318,3.68819 3.04785,3.65009 3.16108,3.61482 3.27149,3.58236 3.37908,3.55273 3.48384,3.52591 3.58578,3.50192 3.6849,3.48076 3.7812,3.46241 3.87467,3.44689 3.96533,3.43419 4.05316,3.42431 4.13817,3.41726 4.22035,3.41302 4.29971,3.41161 4.37626,3.41161 4.44635,3.41166 4.44702,3.42417 4.61343,3.42484 4.62197,3.43487 4.74505,3.43551 4.75253,3.44435 4.85207,3.44499 4.859,3.45368 4.94885,3.45436 4.95561,3.46376 5.04538,3.46451 5.05229,3.47563 5.15095,3.47649 5.15837,3.49103 5.27952,3.49207 5.28796,3.49295 5.29492,3.49686 5.32917,3.5 5.36419,3.5 5.44571,3.5 5.45486,3.5 5.65575,3.49821 5.68007,3.49738 5.6905,3.49516 5.71697,3.46645 6.03898,3.46523 6.05293,3.39658 6.85028,3.39459 6.87361,3.34281 7.48824,3.27331 7.49253,3.20382 7.49584,3.13432 7.49817,3.06483 7.49953)) Tolerance is: 0.0004 Simplified result is: POLYGON((1.20884 3.81395,1.1663 3.89695,1.13837 3.9535,1.11221 4.01006,1.08784 4.06661,1.06524 4.12317,1.02628 4.22659,1.00887 4.27775,0.99294 4.3289,0.978492 4.38006,0.952375 4.47996,0.941568 4.5276,0.932065 4.57524,0.91559 4.67514,0.908966 4.72079,0.903551 4.76643,0.899345 4.81207,0.896348 4.85771,0.891839 4.95499,0.89125 5,0.891839 5.04501,0.893609 5.09003,0.899345 5.18793,0.903551 5.23357,0.908966 5.27921,0.923868 5.37712,0.932065 5.42476,0.941568 5.4724,0.952375 5.52004,0.978492 5.61994,0.99294 5.6711,1.00887 5.72225,1.02628 5.77341,1.06524 5.87683,1.08784 5.93338,1.11221 5.98993,1.13836 6.04648,1.16629 6.10304,1.19292 6.1553,1.22687 6.21973,1.26309 6.28417,1.30155 6.3486,1.34227 6.41304,1.37621 6.4653,1.42695 6.54109,1.48072 6.61688,1.53754 6.69267,1.59739 6.76846,1.67765 6.86689,1.71667 6.91305,1.75679 6.9592,1.79801 7.00536,1.84033 7.05152,1.88375 7.09768,1.97387 7.19,2.02613 7.24226,2.11566 7.32986,2.20903 7.41746,2.30626 7.50507,2.40733 7.59267,2.52209 7.582,2.57436 7.57651,2.69697 7.56203,2.81959 7.54438,2.94221 7.52354,3.06483 7.49953,2.99153 7.16271,2.76489 6.09027,2.74216 5.97705,2.67213 5.60519,2.63532 5.36774,2.62318 5.26016,2.60164 5.168,2.5906 5.12662,2.57778 5.08701,2.55845 5.03242,2.54629 5.00067,2.53279 4.97027,2.50892 4.92023,2.49607 4.89498,2.48215 4.87082,2.45406 4.82499,2.44052 4.80413,2.42605 4.78419,2.39396 4.74237,2.37944 4.72443,2.36407 4.70735,2.32808 4.66943,2.31204 4.65339,2.29516 4.6382,2.2553 4.60415,2.23694 4.58929,2.21769 4.57531,2.17388 4.54521,2.15204 4.53104,2.02613 4.46059,2 4.44505,1.97387 4.42796,1.89344 4.37298,1.86199 4.3507,1.83015 4.32662,1.67482 4.2054,1.63047 4.17003,1.58508 4.13234,1.20884 3.81395,1.22146 3.7599,1.23538 3.70586,1.2506 3.65182,1.26713 3.59778,1.28496 3.54373,1.30409 3.48969,1.32452 3.43565,1.36696 3.33161,1.39856 3.25817,1.43253 3.18474,1.46887 3.1113,1.50757 3.03787,1.54864 2.96443,1.59208 2.891,1.63788 2.81756,1.68606 2.74413,1.73659 2.67069,1.7895 2.59726,1.84477 2.52382,1.90241 2.45039,1.96242 2.37695,2.0248 2.30352,2.08954 2.23008,2.15665 2.15665,2.26607 2.15409,2.3755 2.15435,2.48493 2.15744,2.59435 2.16335,2.70378 2.17208,2.8132 2.18363,2.92263 2.19801,3.03206 2.2152,3.14148 2.23522,3.25091 2.25806,3.36033 2.28373,3.46976 2.31221,3.57918 2.34352,3.68861 2.37765,3.79804 2.4146,3.90746 2.45438,3.77286 2.81292,3.72912 2.9318,3.68819 3.04785,3.65009 3.16108,3.61482 3.27149,3.58236 3.37908,3.55273 3.48384,3.52591 3.58578,3.50192 3.6849,3.48076 3.7812,3.46241 3.87467,3.44689 3.96533,3.43419 4.05316,3.42431 4.13817,3.41726 4.22035,3.41302 4.29971,3.41161 4.37626,3.41161 4.44635,3.42484 4.62197,3.43487 4.74505,3.44499 4.859,3.46451 5.05229,3.47649 5.15837,3.49686 5.32917,3.5 5.36419,3.5 5.65575,3.49516 5.71697,3.46523 6.05293,3.39658 6.85028,3.34281 7.48824,3.27331 7.49253,3.20382 7.49584,3.13432 7.49817,3.06483 7.49953)) 1.67 stdout: Ring is: POLYGON((1.20884 3.81395,1.19293 3.84469,1.1663 3.89695,1.13837 3.9535,1.11221 4.01006,1.08784 4.06661,1.06524 4.12317,1.04518 4.17544,1.02628 4.22659,1.00887 4.27775,0.99294 4.3289,0.978492 4.38006,0.964488 4.43232,0.952375 4.47996,0.941568 4.5276,0.932065 4.57524,0.923868 4.62288,0.91559 4.67514,0.908966 4.72079,0.903551 4.76643,0.899345 4.81207,0.896348 4.85771,0.893609 4.90997,0.891839 4.95499,0.89125 5,0.891839 5.04501,0.893609 5.09003,0.896348 5.14229,0.899345 5.18793,0.903551 5.23357,0.908966 5.27921,0.91559 5.32486,0.923868 5.37712,0.932065 5.42476,0.941568 5.4724,0.952375 5.52004,0.964488 5.56768,0.978492 5.61994,0.99294 5.6711,1.00887 5.72225,1.02628 5.77341,1.04518 5.82456,1.06524 5.87683,1.08784 5.93338,1.11221 5.98993,1.13836 6.04648,1.16629 6.10304,1.19292 6.1553,1.22687 6.21973,1.26309 6.28417,1.30155 6.3486,1.34227 6.41304,1.37621 6.4653,1.42695 6.54109,1.48072 6.61688,1.53754 6.69267,1.59739 6.76846,1.63972 6.82073,1.67765 6.86689,1.71667 6.91305,1.75679 6.9592,1.79801 7.00536,1.84033 7.05152,1.88375 7.09768,1.97387 7.19,2.02613 7.24226,2.11566 7.32986,2.20903 7.41746,2.30626 7.50507,2.40733 7.59267,2.52209 7.582,2.57436 7.57651,2.69697 7.56203,2.81959 7.54438,2.94221 7.52354,3.06483 7.49953,3.04552 7.41246,3.0034 7.21862,2.9966 7.18665,2.99153 7.16271,2.76836 6.10662,2.76698 6.10013,2.76489 6.09027,2.74216 5.97705,2.6906 5.70316,2.68837 5.69147,2.67984 5.6473,2.67213 5.60519,2.66543 5.564,2.65315 5.48319,2.65167 5.47366,2.63996 5.39965,2.63532 5.36774,2.63159 5.33635,2.63138 5.33435,2.6307 5.32801,2.62318 5.26016,2.61595 5.2276,2.60164 5.168,2.5906 5.12662,2.57778 5.08701,2.55845 5.03242,2.54629 5.00067,2.53279 4.97027,2.50892 4.92023,2.49607 4.89498,2.48215 4.87082,2.45406 4.82499,2.44052 4.80413,2.42605 4.78419,2.39396 4.74237,2.37944 4.72443,2.36407 4.70735,2.32808 4.66943,2.31204 4.65339,2.29516 4.6382,2.2553 4.60415,2.23694 4.58929,2.21769 4.57531,2.17388 4.54521,2.15204 4.53104,2.1292 4.51786,2.08948 4.4963,2.08131 4.49177,2.02613 4.46059,2 4.44505,1.97387 4.42796,1.89344 4.37298,1.86199 4.3507,1.83015 4.32662,1.67482 4.2054,1.63047 4.17003,1.58508 4.13234,1.20884 3.81395,1.22146 3.7599,1.23538 3.70586,1.2506 3.65182,1.26713 3.59778,1.28496 3.54373,1.30409 3.48969,1.32452 3.43565,1.34625 3.38161,1.36696 3.33161,1.39856 3.25817,1.43253 3.18474,1.46887 3.1113,1.50757 3.03787,1.54864 2.96443,1.59208 2.891,1.63788 2.81756,1.68606 2.74413,1.73659 2.67069,1.7895 2.59726,1.84477 2.52382,1.90241 2.45039,1.96242 2.37695,2.0248 2.30352,2.08954 2.23008,2.15665 2.15665,2.26607 2.15409,2.3755 2.15435,2.48493 2.15744,2.59435 2.16335,2.70378 2.17208,2.8132 2.18363,2.92263 2.19801,3.03206 2.2152,3.14148 2.23522,3.25091 2.25806,3.36033 2.28373,3.46976 2.31221,3.57918 2.34352,3.68861 2.37765,3.79804 2.4146,3.90746 2.45438,3.77286 2.81292,3.72912 2.9318,3.68819 3.04785,3.65009 3.16108,3.61482 3.27149,3.58236 3.37908,3.55273 3.48384,3.52591 3.58578,3.50192 3.6849,3.48076 3.7812,3.46241 3.87467,3.44689 3.96533,3.43419 4.05316,3.42431 4.13817,3.41726 4.22035,3.41302 4.29971,3.41161 4.37626,3.41161 4.44635,3.41166 4.44702,3.42417 4.61343,3.42484 4.62197,3.43487 4.74505,3.43551 4.75253,3.44435 4.85207,3.44499 4.859,3.45368 4.94885,3.45436 4.95561,3.46376 5.04538,3.46451 5.05229,3.47563 5.15095,3.47649 5.15837,3.49103 5.27952,3.49207 5.28796,3.49295 5.29492,3.49686 5.32917,3.5 5.36419,3.5 5.44571,3.5 5.45486,3.5 5.65575,3.49821 5.68007,3.49738 5.6905,3.49516 5.71697,3.46645 6.03898,3.46523 6.05293,3.39658 6.85028,3.39459 6.87361,3.34281 7.48824,3.27331 7.49253,3.20382 7.49584,3.13432 7.49817,3.06483 7.49953)) Tolerance is: 0.0004 Simplified result is: POLYGON((3.34281 7.48824,3.27331 7.49253,3.20382 7.49584,3.13432 7.49817,3.06483 7.49953,1.20884 3.81395,1.1663 3.89695,1.13837 3.9535,1.11221 4.01006,1.08784 4.06661,1.06524 4.12317,1.02628 4.22659,1.00887 4.27775,0.99294 4.3289,0.964488 4.43232,0.952375 4.47996,0.941568 4.5276,0.932065 4.57524,0.923868 4.62288,0.908966 4.72079,0.903551 4.76643,0.899345 4.81207,0.896348 4.85771,0.891839 4.95499,0.89125 5,0.891839 5.04501,0.896348 5.14229,0.899345 5.18793,0.903551 5.23357,0.908966 5.27921,0.923868 5.37712,0.932065 5.42476,0.941568 5.4724,0.952375 5.52004,0.978492 5.61994,0.99294 5.6711,1.00887 5.72225,1.02628 5.77341,1.04518 5.82456,1.08784 5.93338,1.11221 5.98993,1.13836 6.04648,1.19292 6.1553,1.22687 6.21973,1.26309 6.28417,1.30155 6.3486,1.34227 6.41304,1.37621 6.4653,1.42695 6.54109,1.48072 6.61688,1.53754 6.69267,1.59739 6.76846,1.67765 6.86689,1.71667 6.91305,1.75679 6.9592,1.79801 7.00536,1.84033 7.05152,1.88375 7.09768,1.97387 7.19,2.02613 7.24226,2.11566 7.32986,2.20903 7.41746,2.30626 7.50507,2.40733 7.59267,2.52209 7.582,2.57436 7.57651,2.69697 7.56203,2.81959 7.54438,2.94221 7.52354,3.06483 7.49953,2.99153 7.16271,2.76489 6.09027,2.74216 5.97705,2.67213 5.60519,2.63532 5.36774,2.62318 5.26016,2.60164 5.168,2.5906 5.12662,2.57778 5.08701,2.55845 5.03242,2.54629 5.00067,2.53279 4.97027,2.50892 4.92023,2.49607 4.89498,2.48215 4.87082,2.45406 4.82499,2.44052 4.80413,2.42605 4.78419,2.39396 4.74237,2.37944 4.72443,2.36407 4.70735,2.32808 4.66943,2.31204 4.65339,2.29516 4.6382,2.2553 4.60415,2.23694 4.58929,2.21769 4.57531,2.17388 4.54521,2.15204 4.53104,2.02613 4.46059,2 4.44505,1.97387 4.42796,1.89344 4.37298,1.86199 4.3507,1.83015 4.32662,1.67482 4.2054,1.63047 4.17003,1.58508 4.13234,1.20884 3.81395,1.22146 3.7599,1.23538 3.70586,1.2506 3.65182,1.26713 3.59778,1.28496 3.54373,1.30409 3.48969,1.32452 3.43565,1.36696 3.33161,1.39856 3.25817,1.43253 3.18474,1.46887 3.1113,1.50757 3.03787,1.54864 2.96443,1.59208 2.891,1.63788 2.81756,1.68606 2.74413,1.73659 2.67069,1.7895 2.59726,1.84477 2.52382,1.90241 2.45039,1.96242 2.37695,2.0248 2.30352,2.08954 2.23008,2.15665 2.15665,2.26607 2.15409,2.3755 2.15435,2.48493 2.15744,2.59435 2.16335,2.70378 2.17208,2.8132 2.18363,2.92263 2.19801,3.03206 2.2152,3.14148 2.23522,3.25091 2.25806,3.36033 2.28373,3.46976 2.31221,3.57918 2.34352,3.68861 2.37765,3.79804 2.4146,3.90746 2.45438,3.77286 2.81292,3.72912 2.9318,3.68819 3.04785,3.65009 3.16108,3.61482 3.27149,3.58236 3.37908,3.55273 3.48384,3.52591 3.58578,3.50192 3.6849,3.48076 3.7812,3.46241 3.87467,3.44689 3.96533,3.43419 4.05316,3.42431 4.13817,3.41726 4.22035,3.41302 4.29971,3.41161 4.37626,3.41161 4.44635,3.42484 4.62197,3.43487 4.74505,3.44499 4.859,3.46451 5.05229,3.47649 5.15837,3.49686 5.32917,3.5 5.36419,3.5 5.65575,3.49516 5.71697,3.46523 6.05293,3.39658 6.85028,3.34281 7.48824))" Eyal Soha 13644 std::iterator_traits<>::value_type is always non-const for any kind of boost::iterator_facade Iterator iterator Boost 1.67.0 To Be Determined Bugs jeffrey.hellrung new 2018-07-26T14:32:38Z 2018-07-26T14:32:38Z "I've found a bug in boost::iterator_facade. If you define your own iterator by using the facade and you try to deduce the value_type of the iterator by using std::iterator_traits, the type is always non-const independently of the iterator value type declaration. You can reproduce this with the following test program: {{{ #!C++ #include #include template class IteratorTest : public boost::iterator_facade< IteratorTest , Value , boost::forward_traversal_tag > { public: IteratorTest() {}; private: Value m_value{}; friend class boost::iterator_core_access; template friend class IteratorTest; template inline bool equal(const IteratorTest& other) const { return true; } void increment() { } inline Value& dereference() const noexcept { return m_value; } }; template class DeduceType; int main() { using iterator = IteratorTest; using const_iterator = IteratorTest; auto it = iterator(); auto cit = const_iterator(); DeduceType debug1; DeduceType debug2; DeduceType> debug3; DeduceType> debug4; } }}} With my VS2017 compiler, I receive the following compiler output (I've omitted the implementation of !DeduceType to force the compiler to tell me the type; so the compiler error here is not an Error) {{{ 1>c:\users\florian\source\repos\iterator_facade_const_bug\iterator_facade_const_bug\reproducebug.cpp(46): error C2079: 'debug1' uses undefined class 'DeduceType' 1>c:\users\florian\source\repos\iterator_facade_const_bug\iterator_facade_const_bug\reproducebug.cpp(47): error C2079: 'debug2' uses undefined class 'DeduceType' 1>c:\users\florian\source\repos\iterator_facade_const_bug\iterator_facade_const_bug\reproducebug.cpp(48): error C2079: 'debug3' uses undefined class 'DeduceType>' 1>c:\users\florian\source\repos\iterator_facade_const_bug\iterator_facade_const_bug\reproducebug.cpp(49): error C2079: 'debug4' uses undefined class 'DeduceType>' }}} I've found the reason for this bug in boost/iterator/iterator_facade.hpp:120 {{{ #!C++ template < class ValueParam , class CategoryOrTraversal , class Reference , class Difference > struct iterator_facade_types { typedef typename facade_iterator_category< CategoryOrTraversal, ValueParam, Reference >::type iterator_category; typedef typename remove_const::type value_type; }}} If you change the line {{{ #!C++ typedef typename remove_const::type value_type; }}} to {{{ #!C++ typedef ValueParam value_type; }}} the output of my test program is as expected: {{{ 1>c:\users\florian\source\repos\iterator_facade_const_bug\iterator_facade_const_bug\reproducebug.cpp(46): error C2079: 'debug1' uses undefined class 'DeduceType' 1>c:\users\florian\source\repos\iterator_facade_const_bug\iterator_facade_const_bug\reproducebug.cpp(47): error C2079: 'debug2' uses undefined class 'DeduceType' 1>c:\users\florian\source\repos\iterator_facade_const_bug\iterator_facade_const_bug\reproducebug.cpp(48): error C2079: 'debug3' uses undefined class 'DeduceType>' 1>c:\users\florian\source\repos\iterator_facade_const_bug\iterator_facade_const_bug\reproducebug.cpp(49): error C2079: 'debug4' uses undefined class 'DeduceType>' }}}" Florian Reiser 13642 Strange behaviour of filesystem::relative on Windows filesystem Boost 1.67.0 To Be Determined Bugs Beman Dawes new 2018-07-25T12:21:31Z 2018-07-25T12:21:31Z "The following code snippet behaves unexpected under Windows: {{{ path base(""C:\\Temp""); path contained (""c:\\temp\\test""); path result = relative(contained, base); std::cout << ""relative returns "" << result.generic_string() << ""\n""; }}} It returns an empty path, though the expected result would be something like "".\test"". This is due to a case sensitive comparison, which is not consistent with how Windows treats path names. I understand that this is the way it is documented, but if Boost.Filesystem is understood to be an abstraction layer over different operating systems, this is definitely not the desired behaviour. I have attached a patch, which fixes the problem. " martin.apel@… 13641 Boost.Build doesn't create config.log when --build-dir is specified build Boost 1.66.0 To Be Determined Bugs Vladimir Prus new 2018-07-23T11:16:44Z 2018-07-23T11:16:44Z "Platform: Windows How to reproduce: 1. Extract Boost sources to some directory, say D:\boost 2. Bootstrap Boost as usual 3. Build Boost like this: `b2 --build-dir=D:\boost-build stage` Build process will not produce configuration log in D:\boost-build\boost\bin.v2\config.log, but will spew all configuration messages and errors to console. What I've found: * in tools\build\src\build-system.jam, line 678: `$(first-project-root).build-dir` yields ""/D:/boost-build/boost/bin.v2"". With a slash at the beginning it's not a valid Windows path. * in tools\build\src\build-system.jam, line 679: `set-log-file` rule silently fails * in tools\build\src\build\configure.jam, line 280: `FILE_OPEN` is unable to create ""/D:/boost-build/boost/bin.v2/config.log"" I don't have enough Boost.Build knowledge to provide a reasonable patch, but the problem seems to stem from `build-dir` project attribute prepending a slash to its value on Windows. " alexsharoff@… 13640 GCC trunk can only compile program_options with -fpermissive program_options Boost 1.65.0 To Be Determined Bugs Vladimir Prus new 2018-07-23T09:51:27Z 2018-07-23T09:51:27Z "/usr/include/boost/program_options/variables_map.hpp:172:14: error: friend declaration of ‘void boost::program_options::store(const boost::program_options::basic_parsed_options&, boost::program_options::variables_map&, bool)’ specifies default arguments and isn't the only declaration [-fpermissive] void store(const basic_parsed_options& options, ^~~~~ /usr/include/boost/program_options/variables_map.hpp:98:14: note: previous declaration of ‘void boost::program_options::store(const boost::program_options::basic_parsed_options&, boost::program_options::variables_map&, bool)’ void store(const basic_parsed_options& options, ^~~~~ " anonymous 13639 monotonic_buffer_resource current_buffer() possibly broken and documentation wrong container Boost 1.67.0 To Be Determined Bugs Ion Gaztañaga new 2018-07-21T14:18:22Z 2018-07-21T15:19:17Z "The comment and the function declaration do not seem to match: {{{ //! Returns: //! The number of bytes of storage available for the specified alignment. //! //! Note: Non-standard extension. const void *current_buffer() const BOOST_NOEXCEPT; }}} Source: https://www.boost.org/doc/libs/1_67_0/boost/container/pmr/monotonic_buffer_resource.hpp " Markus Dreseler 13638 wrong system to generic error conversion on windows with ERROR_SHARING_VIOLATION system Boost 1.63.0 To Be Determined Bugs Beman Dawes new 2018-07-18T14:40:41Z 2018-07-19T00:21:07Z "in system/detail/error_code.ipp {{{ case ERROR_SHARING_VIOLATION_: return make_error_condition( permission_denied ); }}} This does not mean permission denied. It means more like device_or_resource_busy or perhaps text_file_busy. " joseph@… 13636 distance calculation can be wrong for rings with collinear segments geometry Boost 1.67.0 To Be Determined Bugs Barend Gehrels new 2018-07-17T12:49:55Z 2018-07-17T13:25:31Z "While unit-testing our code using boost::geometry, I stumbled upon a weird distance calculation: For two rings that are perfect 2d boxes and share the orientation and one segment length, their distance is calculated as zero although they are clearly not intersecting: https://wandbox.org/permlink/Z9DMLo52IdhZRCFb I made a rough sketch of the situation: https://www.desmos.com/calculator/7jbmeu9jqq. ---- Note the line {{{ // slightly change the values vehicleRing[2] = Point2D(vehicleRing[2].x() + 1e-10, vehicleRing[2].y() + 1e-10); }}} .. changing vehicleRing[0] or vehicleRing[1] also results in zero distance, whereas slightly moving vehicleRing[2] results in the expected distance. ---- Sorry for being lazy and not finding a simpler test-case (resp. simpler numbers), I just copied the values I generated in my own testing pipeline." stfn 13635 circular_buffer does not always initialize elements circular_buffer Boost Development Trunk To Be Determined Bugs Jan Gaspar new 2018-07-17T08:41:42Z 2018-07-17T08:45:14Z "The circular_buffer erroneously mark some sections of the buffer as initialized, which can lead to use of uninitialized memory for non-trivial classes in the {{{insert}}} function. The problem appears to come from the {{{is_uninitialized}}} function, which does not properly handle the buffer state when {{{m_buff < m_first < m_last}}}. {{{#!c++ bool is_uninitialized(const_pointer p) const BOOST_NOEXCEPT { return p >= m_last && (m_first < m_last || p < m_first); } }}} In this case, e.g. {{{p = m_buff}}} will be flagged as initialized since {{{p >= m_last}}} is {{{false}}}. A proper check would be: {{{#!c++ bool is_uninitialized(const_pointer p) const BOOST_NOEXCEPT { if (m_first < m_last) return p >= m_last || p < m_first; return p >= m_last && p < m_first; } }}} Minimal reproducing program: {{{#!c++ #include #include /* $ g++ --version | head -n1 g++ (GCC) 8.1.1 20180531 $ g++ example.cpp -o example && valgrind --tool=memcheck ./example 2>&1 | grep Invalid ==19349== Invalid write of size 8 ==19349== Invalid write of size 2 ==19349== Invalid free() / delete / delete[] / realloc() */ int main() { std::vector x(7), y(8); // has non-trivial move/copy boost::circular_buffer< std::vector > buffer(3); buffer.push_back(x); // [x| | ] buffer.push_back(x); // [x|x| ] buffer.pop_front(); // [ |x| ] buffer.insert(buffer.begin(), 2, y); // is_uninitialized(i) -> [0,0,1] (should be [1,0,1]) // [copy 1 -> 0] : [x|x| ] bad copy to uninitialized element // [copy y -> 1] : [x|y| ] ok // [construct y -> 2] : [x|y|y] ok return 0; // tries to destruct uninitialized entry } }}}" Niklas Fejes 13634 regex duplicating literal part of replace string regex Boost 1.67.0 To Be Determined Bugs John Maddock new 2018-07-13T14:29:28Z 2018-07-13T14:29:28Z "The below code should result in 'moreless' but instead results in 'morelessless' {{{ #include #include #include int main(int argc, char **argv) { boost::regex::flag_type regex_flags = boost::regex_constants::normal; boost::regex_constants::match_flag_type match_flags = boost::regex_constants::match_default; boost::regex pattern(""(.*)"", regex_flags); std::string strResult; strResult = boost::regex_replace(std::string(""more""), pattern, std::string(""${1}less""), match_flags); std::cout << strResult << std::endl; char result; std::cin >> result; return 0; } }}}" joseph@… 13633 boost/system/error_code.hpp fails to compile on clang-3.6 in gnu++14 mode due to invalid constexpr system Boost Release Branch Boost 1.68.0 Bugs Beman Dawes new 2018-07-12T06:08:28Z 2018-07-12T06:08:28Z "A minimal test file that includes ""boost/system/error_code.hpp"" fails to compile on my clang-3.6 in gnu++14 mode with the Boost 1.68.0 beta 1. The exact command line and error message are: rainer@rainer10:~/work/cpp_test$ schroot -c steamrt_scout_amd64 -- clang-3.6 -std=gnu++14 -c test.cpp -I boost_1_68_0/ In file included from test.cpp:1: boost_1_68_0/boost/system/error_code.hpp:226:41: error: constexpr constructor never produces a constant expression [-Winvalid-constexpr] BOOST_SYSTEM_CONSTEXPR explicit std_category( boost::system::err... ^ boost_1_68_0/boost/system/error_code.hpp:226:41: note: non-constexpr constructor 'error_category' cannot be used in a constant expression /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/system_error:69:5: note: declared here error_category() noexcept; ^ 1 error generated. This is a regression from Boost 1.67." Rainer Deyke 13632 boost::function operator== is bugged on FreeBSD 11.2 function Boost 1.67.0 To Be Determined Bugs Douglas Gregor new 2018-07-11T13:45:32Z 2018-07-22T01:00:03Z "The Passenger application server is a C++ application and uses Boost. Our FreeBSD 11.2 users ran into a crash bug: https://github.com/phusion/passenger/issues/2097 Upon further investigation, it turns out that the underlying problem is boost::function operator==. The following test program... {{{ boost::function f; printf(""is null: %d\n"", f == NULL); }}} ...prints 1 on macOS (as it should) and 0 on FreeBSD 11.2. I haven't tested this small test program on FreeBSD 11.1, but users reported that Passenger worked fine on FreeBSD 11.1 so the problem likely did not exist there. Digger deeper, on FreeBSD the == operator calls this function (in boost/function/function_base.hpp): {{{ # if !(defined(__GNUC__) && __GNUC__ == 3 && __GNUC_MINOR__ <= 3) // Comparisons between boost::function objects and arbitrary function // objects. GCC 3.3 and before has an obnoxious bug that prevents this // from working. template BOOST_FUNCTION_ENABLE_IF_NOT_INTEGRAL(Functor, bool) operator==(const function_base& f, Functor g) { if (const Functor* fp = f.template target()) return function_equal(*fp, g); else return false; } }}} ...and returns false (the else branch). While on macOS it calls this function: {{{ inline bool operator!=(const function_base& f, detail::function::useless_clear_type*) { return !f.empty(); } }}} Just looking at the #if there already gives me the feeling that it is not right. Boost is trying to work around a GCC 3 bug but it wrongly detects Clang 6.0.0 as GCC 3. This bug has been confirmed on both Boost 1.64 and Boost 1.67." hongli@… 13631 Need for boost::property_tree:ptree::range_type property_tree Boost 1.67.0 To Be Determined Feature Requests Sebastian Redl new 2018-07-09T09:51:56Z 2018-07-09T09:51:56Z "{{{ Examples Without: void my_function ( boost::property_tree:ptree &p , std::pair< Here goes long story about I don't know what. Shoud I use asoc_iter or cons_assoc or decltyp and How. Blah, blah. Help! Help! > &r , std::string const & name ) { r = p.equal_range( name ); } With: void my_function ( boost::property_tree:ptree const&p , boost::property_tree:ptree::range_const_type &r , std::string const & name ) { r = p.equal_range( name ); } }}}" dmilos@… 13630 Missing assembly files on iOS context Boost 1.66.0 To Be Determined Bugs olli new 2018-07-09T09:10:17Z 2018-07-09T09:10:17Z "I am re-posting an issue I posted a while ago on Boost.Context GitHub repository (issue 76, I cannot post links apparently), since it does not seem to be very active. Basically, there are some assembly files that are not compiled for iOS. I am attaching a collection of patches (each patch only handle one architecture). Being a real neophyte with Boost Build, I hope someone will be able to make a single patch, solving every architecture at once." delrieutheo@… 13629 boost::fusion::make_map cannot be called with boost::fusion::vector fusion Boost 1.67.0 To Be Determined Bugs Joel de Guzman new 2018-07-07T05:48:09Z 2018-07-07T05:48:09Z "The following code cannot be compiled on MSVC2017. {{{ struct Z; boost::fusion::make_map(boost::fusion::make_vector(1, 2)); }}} Error is like this {{{ 1>d:\libraries\boost_1_67_0\boost\fusion\container\map\detail\map_impl.hpp(112): error C2664: 'boost::fusion::pair::pair(const boost::fusion::pair &)': cannot convert argument 1 from 'const int' to 'const boost::fusion::vector &' 1> with 1> [ 1> T=boost::fusion::vector 1> ] 1>d:\libraries\boost_1_67_0\boost\fusion\container\map\detail\map_impl.hpp(113): note: Reason: cannot convert from 'const int' to 'const boost::fusion::vector' 1>d:\libraries\boost_1_67_0\boost\fusion\container\map\detail\map_impl.hpp(113): note: No constructor could take the source type, or constructor overload resolution was ambiguous 1>d:\libraries\boost_1_67_0\boost\fusion\container\map\map.hpp(74): note: see reference to function template instantiation 'boost::fusion::detail::map_impl<0,boost::fusion::pair>::map_impl>(const Iterator &,boost::fusion::detail::map_impl_from_iterator)' being compiled 1> with 1> [ 1> T=boost::fusion::vector, 1> Sequence=boost::fusion::vector, 1> Iterator=boost::fusion::vector_iterator,0> 1> ] 1>d:\libraries\boost_1_67_0\boost\fusion\container\map\map.hpp(73): note: see reference to function template instantiation 'boost::fusion::detail::map_impl<0,boost::fusion::pair>::map_impl>(const Iterator &,boost::fusion::detail::map_impl_from_iterator)' being compiled 1> with 1> [ 1> T=boost::fusion::vector, 1> Sequence=boost::fusion::vector, 1> Iterator=boost::fusion::vector_iterator,0> 1> ] 1>d:\libraries\boost_1_67_0\boost\fusion\container\generation\make_map.hpp(59): note: see reference to function template instantiation 'boost::fusion::map>::map,void>(const Sequence &)' being compiled 1> with 1> [ 1> T=boost::fusion::vector, 1> Sequence=boost::fusion::vector 1> ] 1>d:\libraries\boost_1_67_0\boost\fusion\container\generation\make_map.hpp(59): note: see reference to function template instantiation 'boost::fusion::map>::map,void>(const Sequence &)' being compiled 1> with 1> [ 1> T=boost::fusion::vector, 1> Sequence=boost::fusion::vector 1> ] 1>d:\path\to\my_code.cpp(LINE): note: see reference to function template instantiation 'boost::fusion::map> boost::fusion::make_map>(const boost::fusion::vector &)' being compiled 1> with 1> [ 1> T=boost::fusion::vector 1> ] " Shintaro Sakahara 13628 boost::intrusive::rbtree::insert_unique() may throw, contrary to what the doc says intrusive Boost 1.63.0 To Be Determined Bugs Ion Gaztañaga new 2018-07-06T12:07:07Z 2018-07-06T12:07:07Z "The doc says: Throws: Nothing. but it actually may throw if the comparator throws. {{{ seastar::memory::alloc_failure_injector::fail() at /home/tgrabiec/src/scylla/seastar/util/alloc_failure_injector.cc:38 seastar::memory::alloc_failure_injector::on_alloc_point() at /home/tgrabiec/src/scylla/seastar/util/alloc_failure_injector.hh:65 (inlined by) seastar::memory::on_alloc_point() at /home/tgrabiec/src/scylla/seastar/util/alloc_failure_injector.hh:121 (inlined by) managed_bytes::read_linearize() const at /home/tgrabiec/src/scylla/./utils/managed_bytes.hh:141 (inlined by) managed_bytes::data() const at /home/tgrabiec/src/scylla/./utils/managed_bytes.hh:396 (inlined by) managed_bytes::operator std::experimental::fundamentals_v1::basic_string_view >() const at /home/tgrabiec/src/scylla/./utils/managed_bytes.hh:337 (inlined by) dht::token_view::token_view(dht::token const&) at /home/tgrabiec/src/scylla/dht/i_partitioner.hh:151 (inlined by) dht::token::operator dht::token_view() const at /home/tgrabiec/src/scylla/dht/i_partitioner.hh:147 (inlined by) dht::decorated_key::tri_compare(schema const&, dht::decorated_key const&) const at /home/tgrabiec/src/scylla/dht/i_partitioner.cc:191 (inlined by) dht::decorated_key::less_compare(schema const&, dht::decorated_key const&) const at /home/tgrabiec/src/scylla/dht/i_partitioner.cc:217 (inlined by) dht::decorated_key::less_comparator::operator()(dht::decorated_key const&, dht::decorated_key const&) const at /home/tgrabiec/src/scylla/dht/i_partitioner.cc:226 memtable_entry::compare::operator()(memtable_entry const&, memtable_entry const&) const at /home/tgrabiec/src/scylla/memtable.hh:99 (inlined by) boost::intrusive::tree_value_compare, true>::operator()(memtable_entry const&, memtable_entry const&) const at /usr/include/boost/intrusive/detail/tree_value_compare.hpp:147 (inlined by) bool boost::intrusive::detail::key_nodeptr_comp, &memtable_entry::_link>, boost::move_detail::identity >::operator()*, memtable_entry>(boost::intrusive::rbtree_node* const&, memtable_entry const&, boost::move_detail::enable_if_c, &memtable_entry::_link>, boost::move_detail::identity >::is_same_or_nodeptr_convertible*>::value&&(!boost::intrusive::detail::key_nodeptr_comp, &memtable_entry::_link>, boost::move_detail::identity >::is_same_or_nodeptr_convertible::value), void>::type*) const at /usr/include/boost/intrusive/detail/key_nodeptr_comp.hpp:100 (inlined by) std::pair*, bool> boost::intrusive::bstree_algorithms >::insert_unique_check, &memtable_entry::_link>, boost::move_detail::identity > >(boost::intrusive::rbtree_node const* const&, boost::intrusive::rbtree_node* const&, memtable_entry const&, boost::intrusive::detail::key_nodeptr_comp, &memtable_entry::_link>, boost::move_detail::identity >, boost::intrusive::insert_commit_data_t*>&, unsigned long*) at /usr/include/boost/intrusive/bstree_algorithms.hpp:1083 (inlined by) boost::intrusive::bstree_impl, &memtable_entry::_link>, void, memtable_entry::compare, unsigned long, true, (boost::intrusive::algo_types)5, void>::insert_unique(boost::intrusive::tree_iterator, &memtable_entry::_link>, true>, memtable_entry&) at /usr/include/boost/intrusive/bstree.hpp:1153 }}} " anonymous 13627 """bcp --namespace=..."" misses change in macro for ""unordered""." bcp Boost 1.67.0 To Be Determined Bugs John Maddock new 2018-07-05T17:37:53Z 2018-07-06T10:04:50Z "Boost version: 1.67.0 Steps to reproduce given below error message. Hello, I'm using bcp to put all of boost under a new namespace. bcp completes ok, but compilation of the new tree gives the following error (repeats several times - first instance shown): {{{ gcc.compile.c++ build/boost/bin.v2/libs/graph/build/gcc-4.8.5/release/threading-multi/read_graphviz_new.o In file included from ./boost/unordered/detail/set.hpp:6:0, from ./boost/unordered/unordered_set.hpp:20, from ./boost/unordered_set.hpp:17, from ./boost/graph/adjacency_list.hpp:21, from ./boost/graph/graphviz.hpp:24, from libs/graph/src/read_graphviz_new.cpp:50: ./boost/unordered/detail/implementation.hpp:1606:52: error: ‘boost’ has not been declared BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 1, boost) ^ ./boost/unordered/detail/implementation.hpp:1583:5: note: in definition of macro ‘BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE’ namespace_::tuple const& x) \ ^ ./boost/unordered/detail/implementation.hpp:1583:56: error: expected unqualified-id before ‘const’ namespace_::tuple const& x) \ ^ ./boost/unordered/detail/implementation.hpp:1606:9: note: in expansion of macro ‘BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE’ BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 1, boost) ^ ./boost/unordered/detail/implementation.hpp:1583:56: error: expected ‘)’ before ‘const’ namespace_::tuple const& x) \ ^ ./boost/unordered/detail/implementation.hpp:1606:9: note: in expansion of macro ‘BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE’ BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 1, boost) ^ ./boost/unordered/detail/implementation.hpp:1583:63: error: expected initializer before ‘x’ namespace_::tuple const& x) \ ^ ./boost/unordered/detail/implementation.hpp:1606:9: note: in expansion of macro ‘BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE’ BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 1, boost) ^ }}} Steps to reproduce: {{{ unzip boost_1_67_0.zip >/dev/null cd boost_1_67_0/ ./bootstrap.sh --without-libraries=python ./b2 tools/bcp mkdir -p ddt ./dist/bin/bcp --namespace=ddtboost bin.v2 boost libs more status tools ddt cd ddt ./bootstrap.sh --without-libraries=python ./b2 -j4 --build-dir=build --without-python --layout=tagged variant=release link=shared threading=multi runtime-link=shared }}} Changing the third parameter from {{{boost}}} to {{{ddtboost}}} in the calls to {{{BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE()}}} starting at lines 1606 and 1695 fixed the issue (given my --namespace). I've attempted to attach a patch file showing the differences, but chances are outstanding I screwed it up. If I can provide any more info, please let me know. Thanks Lou" Lou Barbieri 13626 Growing managed mapped file cause a pointer invalidation interprocess Boost 1.67.0 To Be Determined Bugs Ion Gaztañaga new 2018-07-05T15:47:47Z 2018-07-05T15:57:43Z bvbfan@… 13624 "GCC 8.1.1 Error: ""Failed to determine builtin floating point type sizes""" atomic Boost 1.67.0 To Be Determined Bugs timblechmann new 2018-07-03T15:53:30Z 2018-07-04T13:31:15Z "Hi, I received an error telling me to make a bug report here ;) I am using GCC 8.1.1 on OpenSUSE Tumbleweed. The project itself is a huge chunk of cmake spaghetti code so I used a quick `@echo` to print out the exact command: {{{ /usr/bin/g++ -frounding-math -std=c++11 -Wuninitialized -Wno-error=unused-variable -DBOOST_NO_AUTO_PTR -DBOOST_SYSTEM_NO_DEPRECATED=1 -fopenmp -Wall -ftemplate-depth-100 -frounding-math -Wno-misleading-indentation -Wno-placement-new -Wno-expansion-to-defined -Wno-long-long -Wno-unknown-pragmas -Wno-comment -Wno-address -Wno-error=address -Wno-expansion-to-defined -g }}} The error I was talking of: {{{ /.../boost_gcc_debug/include/boost/atomic/detail/float_sizes.hpp:139:2: error: #error Boost.Atomic: Failed to determine builtin floating point type sizes, the target platform is not supported. Please, report to the developers (patches are welcome). #error Boost.Atomic: Failed to determine builtin floating point type sizes, the target platform is not supported. Please, report to the developers (patches are welcome). }}} Simon" simon.michalke@… 13623 scope_exit has broken documentation scope_exit Boost 1.67.0 To Be Determined Bugs Lorenzo Caminiti new 2018-07-03T03:15:15Z 2018-07-03T03:15:15Z "The Reference section is empty: https://www.boost.org/doc/libs/1_67_0/libs/scope_exit/doc/html/reference.html However, through Google I found there are pages that are supposed to be in that section, such as https://www.boost.org/doc/libs/1_67_0/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT.html This section also seems to be the only place in the docs that mention which .hpp file to include if you want to use this library, so it isn't even possible to use the library with the documentation alone until the Reference section is fixed." Kef Schecter 13622 BOOST_SCOPE_EXIT error : use of undeclared identifier 'boost_se_params_t_* scope_exit Boost 1.67.0 To Be Determined Bugs Lorenzo Caminiti new 2018-06-29T05:20:40Z 2018-06-29T05:20:40Z "When compiling with Visual C++ 2017 LLVM-vs2017 toolset (CLang), the following code produces "" error : use of undeclared identifier 'boost_se_params_t_8'"" {{{ #include template class AClass { public: int function() { int handle = 0; BOOST_SCOPE_EXIT_TPL(&handle) { if (handle) { handle = 0; } } BOOST_SCOPE_EXIT_END; return handle; } }; class Derived : public AClass { }; int main() { Derived d; return d.function(); } >Source.cpp(8,5): error : use of undeclared identifier 'boost_se_params_t_8' 1> BOOST_SCOPE_EXIT_TPL(&handle) { 1> ^ 1>d:\boost.org\boost_1_67_0\boost/scope_exit.hpp(902,9): note: expanded from macro 'BOOST_SCOPE_EXIT_TPL' 1> BOOST_SCOPE_EXIT_ID_TPL(BOOST_SCOPE_EXIT_AUX_PP_LINE_COUNTER, \ 1> ^ 1>d:\boost.org\boost_1_67_0\boost/scope_exit.hpp(895,9): note: expanded from macro 'BOOST_SCOPE_EXIT_ID_TPL' 1> BOOST_SCOPE_EXIT_AUX_IMPL(id, typename, \ 1> ^ 1>d:\boost.org\boost_1_67_0\boost/scope_exit.hpp(829,22): note: expanded from macro 'BOOST_SCOPE_EXIT_AUX_IMPL' 1> (BOOST_SCOPE_EXIT_DETAIL_PARAMS_T(id)*)boost_se_params) \ 1> ^ 1>d:\boost.org\boost_1_67_0\boost/scope_exit.hpp(280,5): note: expanded from macro 'BOOST_SCOPE_EXIT_DETAIL_PARAMS_T' 1> BOOST_PP_CAT(boost_se_params_t_, id) 1> ^ 1>d:\boost.org\boost_1_67_0\boost/preprocessor/cat.hpp(22,32): note: expanded from macro 'BOOST_PP_CAT' 1># define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) 1> ^ 1>d:\boost.org\boost_1_67_0\boost/preprocessor/cat.hpp(29,34): note: expanded from macro 'BOOST_PP_CAT_I' 1># define BOOST_PP_CAT_I(a, b) a ## b 1> ^ 1>(94,1): note: expanded from here 1>boost_se_params_t_8 1>^ 1>Source.cpp(23,12): note: in instantiation of member function 'AClass::function' requested here 1> return d.function(); 1> ^ 1>Source.cpp(8,5): error : expected expression 1> BOOST_SCOPE_EXIT_TPL(&handle) { 1> ^ 1>d:\boost.org\boost_1_67_0\boost/scope_exit.hpp(902,9): note: expanded from macro 'BOOST_SCOPE_EXIT_TPL' 1> BOOST_SCOPE_EXIT_ID_TPL(BOOST_SCOPE_EXIT_AUX_PP_LINE_COUNTER, \ 1> ^ 1>d:\boost.org\boost_1_67_0\boost/scope_exit.hpp(895,9): note: expanded from macro 'BOOST_SCOPE_EXIT_ID_TPL' 1> BOOST_SCOPE_EXIT_AUX_IMPL(id, typename, \ 1> ^ 1>d:\boost.org\boost_1_67_0\boost/scope_exit.hpp(829,59): note: expanded from macro 'BOOST_SCOPE_EXIT_AUX_IMPL' 1> (BOOST_SCOPE_EXIT_DETAIL_PARAMS_T(id)*)boost_se_params) \ 1> ^ 1>2 errors generated. }}}" markus_bonk@… 13619 boost.crc fails to compile with gcc due to undefined behaviour crc Boost 1.67.0 To Be Determined Bugs Daryle Walker new 2018-06-26T19:11:34Z 2018-06-26T19:13:01Z "Boost revision: 62faaa4584e16cd60cd62d5cbb0833954686e89c\\ Following code is minimal example to reproduce error: {{{ #include template class boost::crc_optimal<6,6,6,6,0,0>; int main() {} }}} {{{ $ g++ -std=c++14 -pedantic-errors -I../boost/install-root/include/ -o/dev/null crc-test.cxx In file included from ../boost/install-root/include/boost/config.hpp:61:0, from ../boost/install-root/include/boost/crc.hpp:12, from crc-test.cxx:1: ../boost/install-root/include/boost/crc.hpp: In instantiation of 'const least boost::detail::mask_uint_t<6ul>::sig_bits': ../boost/install-root/include/boost/crc.hpp:356:9: required from 'const fast boost::detail::mask_uint_t<6ul>::sig_bits_fast' ../boost/install-root/include/boost/crc.hpp:915:41: required from 'boost::crc_optimal::value_type boost::crc_optimal::get_interim_remainder() const [with long unsigned int Bits = 6ul; typename boost::uint_t::fast TruncPoly = 6u; typename boost::uint_t::fast InitRem = 6u; typename boost::uint_t::fast FinalXor = 6u; bool ReflectIn = false; bool ReflectRem = false; boost::crc_optimal::value_type = unsigned char]' crc-test.cxx:3:23: required from here ../boost/install-root/include/boost/crc.hpp:350:69: error: left operand of shift expression '(-1 << 6ul)' is negative [-fpermissive] BOOST_STATIC_CONSTANT( least, sig_bits = (~( ~(least( 0u )) << Bits )) ); ~~~~~~~~~~~~~~~~~^~~~~~~~~ }}} GCC produce incorrect message: there is no -Werror options or similar, as you see. Reason is initialization of static constant in declaration in class with expression that is _not_ constant because consists UB(left shift of negative value). '0u' literal is unsigned, but promouted to 'int' when 'least' is 'unsigned char'. Error is reproductable on release 1.67.0. Solution, for example, is make explicit cast of left operand to unsigned integral type. GCC information: {{{ $ g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/6/lto-wrapper Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Debian 6.3.0-18+deb9u1' --with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-6 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-6-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-6-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) }}}" Pavel Fevralev 13618 Support for string_view etc... string_algo Boost 1.67.0 To Be Determined Feature Requests Marshall Clow new 2018-06-26T11:21:50Z 2018-06-26T14:44:46Z "Boost String Algorithm doesn't work well with string_view and I think it should work fine. So I wrote wrapper codes around it to make that possible. My original intention was just for a personal use, so it is C++17 and I wasn't strict about compatibility to boost string_algo either. But having done that, it occurs to me that many things I did are also applicable to the boost string_algo in a way it keeps backward compatibility so it doesn't break exiting code. I put the code and brief summary of changes at gitlab.com/stream9/string_algo/blob/master/Summary.md (if I put URL, system regard it as spam, so please prepend scheme by yourself). I don't know boost string_algo have plan to make similar improvement. I you do, maybe I can help something. " stream009@… 13616 """likely"" is c++2a-keyword used by gcc 8.1.1 but used as identifier" date_time Boost 1.67.0 To Be Determined Bugs az_sw_dude new 2018-06-24T08:11:43Z 2018-06-24T08:11:43Z "In new [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0479r5.html C++2a-Specification] new attribute-tokens, ""likely"" and ""unlikely"", are introduced. In GCC 8.1.1 this proposed feature has already been implemented. So using GCC8.1.1+ boost (version 1.67) won't compile anymore since ""likely"" is used as identifier in different header files. For example: boost/date_time/special_values_parser.hpp:105:17 boost/date_time/time_parsing.hpp:312:19 " anonymous 13614 padding related issue on VS2017 with boost::endian endian Boost 1.67.0 To Be Determined Bugs Beman Dawes new 2018-06-21T04:51:38Z 2018-06-21T04:51:38Z "On Visual Studio 2017 upd3, there seems to be some unexpected padding-related behaviour, shown below. The issue might not necessarily be a library 'bug', but I think it's worth looking at. {{{ #!div style=""font-size: 80%"" Code highlighting: {{{#!c++ #include #include using namespace boost::endian; #pragma pack(push, 1) struct Empty {}; struct T1 { big_uint16_t d; uint8_t d2; }; struct T2 { uint16_t d; uint8_t d2; }; struct D0: T1 {} x0; // sizeof(x0) evaluates to 3 struct D1: T1, Empty {} x1; // sizeof(x1) evaluates to 4 <- i think this should also be 3 struct D2: T2, Empty {} x2; // sizeof(x2) evaluates to 3 // (uint8_t*)&x1.d2 - (uint8_t*)&x1.d evaluates to 2 (i.e. big_uint16_t is itself not padded) // // - tested with a struct containing a char[2], this did not happen // - tested on various versions of g++ and clang, but this did not happen either. #pragma pack(pop) using namespace std; int main() { printf(""%zu %zu %zu"", sizeof(x0), sizeof(x1), sizeof(x2)); return 0; } }}} }}} " imak@… 13613 gcd performs modulo by zero which is undefined integer Boost 1.67.0 To Be Determined Bugs Daryle Walker new 2018-06-20T12:45:53Z 2018-06-20T12:45:53Z "Boost.Rational uses Boost.Integer's gcd method. I Added Coverity Scan support to the Boost.Rational build and it identified an issue that needs investigation: CID 293013 (#4-12 of 12): Division or modulo by zero (DIVIDE_BY_ZERO) divide_by_zero: In function call gcd, modulo by expression 0 has undefined behavior. [hide details] (rational_test.cpp) 470 BOOST_CHECK_EQUAL( boost::gcd( 0, -9), static_cast( 9) ); (rational.hpp) IntType gcd(IntType n, IntType m) { // Defer to the version in Boost.Integer > 1. divide_arg: n is used as a divisor in function gcd. return integer::gcd( n, m ); } " James E. King, III 13612 Missing support for move semantic in boost::bimap bimap Boost 1.67.0 To Be Determined Feature Requests Matias Capeletto new 2018-06-20T06:44:56Z 2018-06-20T06:44:56Z And due to that that useful container is slow as hell. piotrzsl@… 13610 _env_impl is not reloaded process Boost 1.63.0 To Be Determined Bugs new 2018-06-19T12:34:48Z 2018-06-19T12:34:48Z "In boost/process/detail/posix/environment.hpp native_environment_impl::reload vector _impl reloaded, but _env_impl set to _impl.data() in constructor and will be invalid after call of reload (after setting of environment for example). _env_impl = _impl.data(); need to be added to native_environment_impl::reload" santa4github@… 13607 Asio bad_address_cast fix under no exceptions asio Boost Development Trunk To Be Determined Bugs chris_kohlhoff new 2018-06-14T18:12:21Z 2018-06-14T18:15:01Z When using the Asio module in MSVC when exceptions are disabled, deriving an exception from bad_cast throws a linker error. A simple fix would look similar to the lexical_cast, bad_any_cast, etc. kvankooten 13605 Filedescriptor leak in boost::process process Boost 1.64.0 To Be Determined Bugs new 2018-06-14T13:27:47Z 2018-06-14T13:27:47Z "Hi, I am using boost 1.64.0 on linux. I am using boost process to execute subprocesses. When, for some reason, the path does not point to a file, or when the file is not executable, then I keep leaking file descriptors. Minimal example: {{{ #include #include #include #include #include int main() { namespace bp = boost::process; namespace ex = bp::extend; system(""ls -l /proc/self/fd""); try { boost::asio::io_service ios; bp::child process (""/does/not/exist"", ios); process.wait(); } catch (const bp::process_error& e) { // A process_error has been thrown - there is no file /does/not/exist } system(""ls -l /proc/self/fd""); } }}} Example output: {{{ total 0 lrwx------ 1 hopp hopp 64 Jun 14 12:04 0 -> /dev/pts/3 lrwx------ 1 hopp hopp 64 Jun 14 12:04 1 -> /dev/pts/3 lrwx------ 1 hopp hopp 64 Jun 14 12:04 2 -> /dev/pts/3 lr-x------ 1 hopp hopp 64 Jun 14 12:04 3 -> /proc/19629/fd total 0 lrwx------ 1 hopp hopp 64 Jun 14 12:04 0 -> /dev/pts/3 lrwx------ 1 hopp hopp 64 Jun 14 12:04 1 -> /dev/pts/3 lrwx------ 1 hopp hopp 64 Jun 14 12:04 2 -> /dev/pts/3 lr-x------ 1 hopp hopp 64 Jun 14 12:04 3 -> pipe:[82382] lr-x------ 1 hopp hopp 64 Jun 14 12:04 4 -> /proc/19632/fd }}} The file descriptor leaked by the example is {{{3 -> pipe:[82382]}}}. Is this a bug or am I doing something wrong? " 4hopp 13601 Compiling iterator_range_core.hpp with VS2017 (15.7.1) generates the Warning C5032. range Boost 1.67.0 To Be Determined Bugs Neil Groves new 2018-06-14T07:36:33Z 2018-06-14T07:36:33Z "This ticket is split off ticket #13595. When compiling iterator_range_core.hpp with ""Microsoft Visual Studio Professional 2017 Version 15.7.1"" the warning: {{{ warning C5032: detected #pragma warning(push) with no corresponding #pragma warning(pop) compiling ... }}} is generated. The warnings come from from this codeline: iterator_range_core.hpp line 21 {{{ 20 #if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500)) 21 #pragma warning( push ) 22 #pragma warning( disable : 4996 ) 23 #endif }}} " alexander.frank.lehmann@… 13599 condition_variable::timed_wait never returns thread Boost 1.65.0 To Be Determined Support Requests viboes assigned 2018-06-14T03:04:33Z 2018-09-11T21:29:43Z "boost::condition_variable::timed_wait never returns if compiled with -DBOOST_THREAD_HAS_CONDATTR_SET_CLOCK_MONOTONIC. this_thread::sleep and thread::timed_join exhibit the same problem, but both these functions are documented as deprecated. However condition_variable::timed_wait is not documented as deprecated. This can be worked around by using condition_variable::wait_for. The following simple test program demonstrates the problem in that it hangs forever. Removing the #define makes it return after one second. {{{ #define BOOST_THREAD_HAS_CONDATTR_SET_CLOCK_MONOTONIC #include #include int main( int argc, char* argv[] ) { boost::condition_variable cv; boost::mutex m; boost::mutex::scoped_lock lock( m ); cv.timed_wait( lock, boost::posix_time::seconds( 1 ) ); std::cout << ""wait_for has returned"" << std::endl; return 0; } }}} " steven.cook@… 13597 VC++ 15 compiler warning C4244: 'argument': conversion from 'const coordinate_type' to 'const int', possible loss of data geometry Boost 1.67.0 To Be Determined Bugs Barend Gehrels new 2018-06-13T13:34:58Z 2018-06-14T09:42:23Z "I'm using Microsoft Visual Studio 15.6.0 to compile boost 1.67.0. I use compiler flag /W4 and compile for x64 platform. The following warnings (which we declared an error for our project) occur in geometry: **\boost_1_67_0\boost\geometry\algorithms\detail\expand\point.hpp(73): error C4244: 'argument': conversion from 'const coordinate_type' to 'const int', possible loss of data** **\boost_1_67_0\boost\geometry\strategies\cartesian\side_by_triangle.hpp(114): error C4244: 'initializing': conversion from 'coordinate_type' to 'const promoted_type', possible loss of data** **\boost_1_67_0\boost\geometry\algorithms\detail\equals\collect_vectors.hpp(91): error C4244: 'initializing': conversion from '__int64' to 'double', possible loss of data** **\boost_1_67_0\boost\geometry\strategies\cartesian\intersection.hpp(159): error C4244: 'return': conversion from '__int64' to 'double', possible loss of data** Consider related ticket #10667." Volker Schöch 13594 init_from_settings does not allow repeated calls log Boost 1.67.0 To Be Determined Bugs Andrey Semashev new 2018-06-13T09:42:49Z 2018-06-13T10:24:38Z "I have an application that causes init_from_settings to be called repeatedly, which does not quite work as I expected. I noticed that this causes memory use to grow, presumably because old sinks are not removed and new sinks are added which each call, which (to me) is unexpected behaviour. I understand that sinks can be removed by calling remove_all_sinks() before (re)initialization, but it would be much nicer when init_from_settings would just configure the logging system 'from scratch' (I am not currently sure that I can fully revert the system to an uninitialized state before calling init_from_settings). " PieterB@… 13593 intersects assertion failure for linestrings in spherical_equatorial coordinates geometry Boost 1.67.0 To Be Determined Bugs Barend Gehrels new 2018-06-13T09:31:59Z 2018-06-13T09:31:59Z "I have found a specific case when boost::geometry::intersects fails with assertion ""lhs.denominator() != 0"" on linestrings with equal (or very close) segments in spherical_equatorial coordinate system. Here is the test example: {{{ #include #include #include #include #include int main() { using GeoCoordSystem = boost::geometry::cs::spherical_equatorial; using GeoPoint = boost::geometry::model::d2::point_xy; boost::geometry::model::linestring line1, line2; boost::geometry::read_wkt(""linestring(11.5800734 48.2523631, 11.580114 48.2524051, 11.5801572 48.2524435)"", line1); boost::geometry::read_wkt(""linestring(11.5800734 48.2523631, 11.580114 48.2524051, 11.5801572 48.2524434)"", line2); std::cout << ""Using boost v"" << BOOST_VERSION << std::endl; const bool b = boost::geometry::intersects(line1, line2); std::cout << ""Intersects: "" << (b ? ""YES"" : ""NO"") << std::endl; return 0; } }}} Program output is the following: {{{ Using boost v106700 a.out: /opt/Storage/Install/boost_1_67_0/boost/geometry/policies/robustness/segment_ratio.hpp:54: static bool boost::geometry::detail::segment_ratio::less::apply(const Ratio&, const Ratio&) [with Ratio = boost::geometry::segment_ratio; Type = double]: Assertion `lhs.denominator() != 0' failed. Aborted (core dumped) }}} The issue is reproducible in both boost v1.63 and latest v1.67." swordvetal@… 13592 command_line_parser(int, char const*[]) throws std::bad_alloc when called with zero arguments program_options Boost 1.67.0 To Be Determined Bugs Vladimir Prus new 2018-06-12T09:58:32Z 2018-06-12T09:58:32Z "boost::program_options::command_line_parser(int, char const*[]) throws std::bad_alloc when called with zero arguments. Code to reproduce: {{{ #include int main(int, char const*[]) { boost::program_options::command_line_parser fParser(0, nullptr); } }}}" kai.unger@… 13590 Bug in executor::_read_error leads to bad string allocation exception process Boost 1.65.0 To Be Determined Bugs new 2018-06-11T09:15:19Z 2018-06-11T09:15:19Z "Method executor::_read_error contains various weaknesses which can lead to string allocation with excessive length, causing exceptions at string construction or out-of-memory issues. The most severe issue caused by the fact that the method is not prepared for reading fragments from the pipe. As the pipe is not created with O_DIRECT, data can be fragmented. In fact, we observed that ::read returned just 4 bytes, although _write_error is writing 8 bytes. This leaves the second entry of the data[2] array uninitialized(!!), which is afterwards - without any check! - passed directly to the string creation: std::string msg(data[1], ' '); --> crash as data[1] contains random value Also the second part of the function, which reads the error message text, is not prepared for reading fragmented data. Patched code that works well here can be found attached. " Elmar Daegele 13589 boost_1_55_0 bootstrap mingw failed Building Boost Boost 1.55.0 To Be Determined Support Requests James E. King, III new 2018-06-11T01:47:06Z 2018-09-21T09:02:10Z "command that i used {{{ cd C:\deps\boost_1_55_0\ bootstrap.bat mingw }}} Error output {{{ Building Boost.Build engine 'gcc' is not recognized as an internal or external command, operable program or batch file. Failed to build Boost.Build engine. Please consult bootstrap.log for furter diagnostics. }}} bootstrap.log {{{ ### ### Using 'mingw' toolset. ### C:\deps\boost_1_55_0\tools\build\v2\engine>if exist bootstrap rd /S /Q bootstrap C:\deps\boost_1_55_0\tools\build\v2\engine>md bootstrap C:\deps\boost_1_55_0\tools\build\v2\engine>gcc -DNT -o bootstrap\jam0.exe command.c compile.c constants.c debug.c execcmd.c execnt.c filent.c frames.c function.c glob.c hash.c hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c object.c option.c output.c parse.c pathnt.c pathsys.c regexp.c rules.c scan.c search.c subst.c timestamp.c variable.c modules.c strings.c filesys.c builtins.c md5.c class.c cwd.c w32_getreg.c native.c modules/set.c modules/path.c modules/regex.c modules/property-set.c modules/sequence.c modules/order.c }}} " Rie 13588 rename lock_sharable and its methods(and mutex methods) in order of concept of std::lock_shared interprocess Boost 1.67.0 To Be Determined Tasks Ion Gaztañaga new 2018-06-07T08:54:52Z 2018-06-07T08:54:52Z "To make compatible with std locks, interprocess shared mutexes and locks classes( and they methods) must be renamed according std SharedMutex concept. see http://en.cppreference.com/w/cpp/concept/SharedMutex. Example: boost::interprocess::file_lock::lock_sharable to boost::interprocess::file_lock::lock_shared boost::interprocess::file_lock::unlock_sharable to boost::interprocess::file_lock::unlock_shared boost::interprocess::file_lock::try_lock_sharable to boost::interprocess::file_lock::try_lock_shared boost::interprocess::sharable_lock to boost::interprocess::shared_lock boost::interprocess::sharable_lock::owns to boost::interprocess::shared_lock::owns_lock and so on..." fsmoke@… 13587 ssl::stream::async_shutdown() never completes when async_read is active asio Boost 1.67.0 To Be Determined Bugs chris_kohlhoff new 2018-06-06T07:46:10Z 2018-06-06T07:46:10Z "I have a connected ssl::stream. If I do an asio::async_read followed by an async_shutdown on the stream, the read operation will complete with stream_truncated error (as expected) but the async_shutdown operation never completes (i.e. handler never gets called). See a minimal reproduce below. Environment: Debian stretch, gcc 6.3.0, Boost 1.67, BoringSSL. My questions: 1. Is it allowed to call async_shutdown on an ssl::stream when there is an async_read pending? 2. If yes, is the above behavior expected? 3. If not, how do I gracefully shutdown an SSL stream when an async_read is pending? And is this restriction documented anywhere? Code: {{{ #include #include #include #include #include #include #include #include #include #include using tcp = boost::asio::ip::tcp; // from namespace ssl = boost::asio::ssl; // from void fail(boost::system::error_code ec, char const* what) { std::cerr << what << "": "" << ec.message() << ""\n""; } class session : public std::enable_shared_from_this { tcp::resolver resolver_; ssl::stream stream_; std::string buffer_; public: explicit session(boost::asio::io_context& ioc, ssl::context& ctx) : resolver_(ioc) , stream_(ioc, ctx) { } void run( char const* host, char const* port) { // Set SNI Hostname (many hosts need this to handshake successfully) if(! SSL_set_tlsext_host_name(stream_.native_handle(), host)) { boost::system::error_code ec{static_cast(::ERR_get_error()), boost::asio::error::get_ssl_category()}; std::cerr << ec.message() << ""\n""; return; } resolver_.async_resolve( host, port, std::bind( &session::on_resolve, shared_from_this(), std::placeholders::_1, std::placeholders::_2)); } void on_resolve( boost::system::error_code ec, tcp::resolver::results_type results) { if(ec) return fail(ec, ""resolve""); boost::asio::async_connect( stream_.next_layer(), results.begin(), results.end(), std::bind( &session::on_connect, shared_from_this(), std::placeholders::_1)); } void on_connect(boost::system::error_code ec) { if(ec) return fail(ec, ""connect""); stream_.async_handshake( ssl::stream_base::client, std::bind( &session::on_handshake, shared_from_this(), std::placeholders::_1)); } void on_handshake(boost::system::error_code ec) { if(ec) return fail(ec, ""handshake""); std::cout << ""Connected"" << std::endl; boost::asio::async_read(stream_, boost::asio::dynamic_buffer(buffer_), std::bind( &session::on_read, shared_from_this(), std::placeholders::_1, std::placeholders::_2)); stream_.async_shutdown( std::bind( &session::on_shutdown, shared_from_this(), std::placeholders::_1)); } void on_read( boost::system::error_code ec, std::size_t) { if(ec) return fail(ec, ""read""); std::cout << ""Message received"" << std::endl; } void on_shutdown(boost::system::error_code ec) { std::cout << ""Closed"" << std::endl; } }; int main(int argc, char** argv) { boost::asio::io_context ioc; ssl::context ctx{ssl::context::sslv23_client}; std::make_shared(ioc, ctx)->run(""www.google.com"", ""443""); ioc.run(); return EXIT_SUCCESS; } }}} The program will output {{{ Connected read: stream truncated }}} and hangs." anonymous 13586 array::rangecheck() allows access one element past end of array array Boost 1.67.0 To Be Determined Bugs Marshall Clow new 2018-06-02T08:38:20Z 2018-06-02T08:38:20Z "The array::rangecheck method does not throw an out of range exception for an index equal to the array size. This makes the at() method not throw an exception for N as index value. This differs from the documentation for that method. Note: I discovered this by reading the code and have not made any tests of this behavior." anonymous 13585 Undefined Behavior results in optimizer removing critical check filesystem Boost 1.67.0 To Be Determined Bugs Beman Dawes new 2018-05-31T21:16:23Z 2018-05-31T21:16:23Z "We have been experiencing an odd BAD_ACCESS when calling boost::filesystem::copy(const path& from, const path& to) the symptom is a null pointer dereference when converting *ec to a bool at operations.cpp:894. However, this is preceeded by a check to ensure the ec != 0 which is being subverted. The working theory is that on operations.cpp:893 a potentially null pointer to a boost::system::error_code is dereferenced and assigned to a reference as part of symlink_status(from, *ec) which is *undefined behavior*. As a result, the optimizer seems to be removing the ""ec != 0"" check from the next line based on the knowledge that if ec had been null it would have resulted in undefined behavior already. This of course leads to the null ec being dereferenced and having its bool conversion called. In turn, this creates a bad access and abort." bart.wyatt@… 13584 "boost beast flat buffer move ctor, move assign and swap all ""cancel"" a prepare()" asio Boost 1.67.0 To Be Determined Bugs chris_kohlhoff new 2018-05-31T03:34:48Z 2018-05-31T13:07:01Z "The boost beast flat_buffer ""cancels"" any outstanding prepare() when being moved from or swapped. This seems like a very sane thing to do. However, boost::asio::async_read_until depends on calling prepare() on it's DynamicBuffer and then calling the corresponding commit() on a moved-to version. Flat buffer will (correctly) silently commit the minimum of the requested size and the size from the previous prepare(). When used with async_read_until, the commit is always zero, since the prepare was ""cancelled"" by the move. The flat_buffer code always sets last_ to out_ during a move or swap, which is what achieves what I am calling the ""cancel"" of the prepare(). I tested setting last_ to other.last_ in the move ctor, move assignment, and swap, and verified that asio::async_read_until now works with beast::flat_buffer On this report I set component=asio, because I couldn't find beast on the drop box. I'm working with 1.67 and g++ 7.30 on ubuntu 18.04 " paul.d.rose@… 13583 quantities can be assigned from cmath sqrt result, but not initialized units Boost 1.67.0 To Be Determined Bugs Matthias Schabel new 2018-05-30T21:33:28Z 2018-05-30T21:33:28Z "The cmath functions are very helpful in letting me perform math on quantities, but I ran across an inconsistency. Code like: {{{ quantity x, y; quantity foo = sqrt(x*x + y*y); }}} fails to compile (with an ""error: conversion from...""). The workaround is to use an assignment instead: {{{ quantity foo; foo = sqrt(x*x + y*y); }}} It seems odd to have this restriction (and it's certainly undocumented) so I suspect it is a bug. " edaskel@… 13582 what does $(>) mean? build Boost 1.67.0 To Be Determined Support Requests Vladimir Prus new 2018-05-30T06:42:25Z 2018-05-30T06:42:25Z "I notice below logic in tools/build/src/tools/gcc.jam actions link.dll bind LIBRARIES { ""$(CONFIG_COMMAND)"" -L""$(LINKPATH)"" -Wl,$(RPATH_OPTION:E=-R)$(SPACE)-Wl,$(RPATH) ""$(.IMPLIB-COMMAND)$(<[1])"" -o ""$(<[-1])"" $(HAVE_SONAME)-Wl,$(SONAME_OPTION)$(SPACE)-Wl,$(<[-1]:D=) -shared $(START-GROUP) ""$(>)"" ""$(LIBRARIES)"" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS) } And then I google and find $(>) will be ""expanded to a list of source files"". Refer to the source files, they are absolute path? is there any means to use relate path? " anonymous 13581 `basic_stream_socket::read_some` on `non_blocked` socket returns `ec=would_block` asio Boost Development Trunk To Be Determined Bugs chris_kohlhoff new 2018-05-29T14:52:30Z 2018-05-30T09:48:25Z "In the `boost\asio\detail\impl\socket_ops.ipp` file there is `sync_recv` function which should block until some data is received. Inside this function there is following `if` block {{{ if ((state & user_set_non_blocking) || (ec != boost::asio::error::would_block && ec != boost::asio::error::try_again)) return 0; }}} IMHO condition is wrong here. It should return 0 for all cases except socket is in `non_blocking` mode and ec is one of `[would_block, try_again]` In fact if socket is in 'non-blocked' mode and ec = would_block, it also returns 0. If assumption is correct, code should look like {{{ if (0 == (state & user_set_non_blocking) || (ec != boost::asio::error::would_block && ec != boost::asio::error::try_again)) return 0; }}} " Dmytro Ovdiienko 13580 "The call ""boost::filesystem::create_directories"" on Windows cannot create a complete chain of directories, if the path's item contains terminating space(s)" filesystem Boost 1.67.0 To Be Determined Bugs Beman Dawes new 2018-05-29T11:50:09Z 2018-05-29T11:55:17Z "The issue is obserbed on OS Windows, and not on OS Linux. Looks like a subdirectory, which name contains terminal space(s), is created without space(s) on OS Windows, and then an attempt to create a nested subdirectory fails." sz@… 13579 memory management in algorithm::is_any_of string_algo Boost 1.63.0 To Be Determined Bugs Marshall Clow new 2018-05-29T10:29:02Z 2018-06-13T20:24:35Z "In boost/algorithm/string/detail/classification.hpp, is_any_ofF contains a fixed buffer '' {{{ set_value_type m_fixSet[sizeof(set_value_type*)*2]; }}} This buffer is used for storage when the following predicate holds: {{{ static bool use_fixed_storage(std::size_t size) { return size<=sizeof(set_value_type*)*2; } }}} Note that as the RHS of the inequality is measured in bytes, the argument ''size'' should also be measured in bytes. However, a typical use is as follows: {{{ std::size_t Size=::boost::distance(Range); m_Size=Size; if(use_fixed_storage(m_Size)) }}} boost::distance does not return a value in bytes; it returns the length of a sequence. It's quite possible for e.g. a sequence of length 2 to occupy 16 bytes. This results in reads past the end of m_fixSet, and consequent segfaults." anonymous 13578 Why boost.context export make_x86_64_sysv_elf_gas.o context Boost 1.67.0 To Be Determined Support Requests olli new 2018-05-29T07:54:20Z 2018-05-30T02:01:12Z "when build context library, it will compile some assembly files. After the context library generated, I use readelf to analyze the context library as below: readelf --wide --symbols /my-build/boost/1.67.0-r0/boost_1_67_0/x86_64-poky-linux/boost/bin.v2/libs/context/build/aca09349fdb84d131321425f6c3a38ed/libboost_context.so.1.67.0 42: 0000000000000000 0 FILE LOCAL DEFAULT ABS /my-build/boost/1.67.0-r0/boost_1_67_0/x86_64-poky-linux/boost/bin.v2/libs/context/build/aca09349fdb84d131321425f6c3a38ed/asm/make_x86_64_sysv_elf_gas.o Why does the make_x86_64_sysv_elf_gas.o line exist in the output of ""readelf --wide --symbols /my-build/boost/1.67.0-r0/boost_1_67_0/x86_64-poky-linux/boost/bin.v2/libs/context/build/aca09349fdb84d131321425f6c3a38ed/libboost_context.so.1.67.0"", is there any means to hidden the line?" anonymous 13576 boost filesystem create_directories function fails randomly when accessing to a mapped network drive filesystem Boost 1.60.0 To Be Determined Bugs Beman Dawes new 2018-05-28T15:07:47Z 2018-05-28T15:07:47Z "When trying to create a folder in a mapped network drive with boost filesystem create_directories function, I get random errors of type: ""The system cannot find the path specified."". By random I mean that sometimes I get the error and sometimes I don't. And yes, I have checked: * It is a valid path. * It is not a too long path. In fact, I use windows extended path as \?\PATH. * The network drive works perfectly, and it is inside our company local network (Gigabit ethernet). * I have write permissions. * There are not unicode characters. Below the code (adapted to make it more simple). {{{ #include ""boost/filesystem.hpp"" #include #include #include #include #define MAX_RETRIES 10 #define RETRY_TIME 5000 //in millisecond namespace fs = boost::filesystem; bool createDirectory(const std::string& folderPath) { //If the function does not succeed to create the directory in first place, it will retry after RETRY_TIME miliseconds a maximum number of MAX_RETRIES. for (unsigned int i=0; i container Boost 1.64.0 To Be Determined Bugs Ion Gaztañaga new 2018-05-23T14:38:52Z 2018-05-23T14:38:52Z "Code that uses boost::container::flap_map fails to compile on gcc4.8.5 with -std=c++1 when BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE is defined, with the following compile error: boost/move/unique_ptr.hpp: In constructor 'boost::movelib::unique_ptr::unique_ptr(boost::movelib::unique_ptr&&)': boost/move/unique_ptr.hpp:528:29: error: 'move_if_not_lvalue_reference' is not a member of 'boost' : m_data(u.release(), ::boost::move_if_not_lvalue_reference(u.get_deleter())) ^ boost/move/unique_ptr.hpp:528:68: error: expected primary-expression before '>' token : m_data(u.release(), ::boost::move_if_not_lvalue_reference(u.get_deleter())) I was able to workaround this by passing in -DBOOST_MOVE_MAKE_UNIQUE_HPP_INCLUDED on the commandline to gcc, which effectively inhibits boost/move/make_unique.hpp from being included. The fact the above workaround worked at all seems to suggest that container/detail/flat_tree.hpp has no dependency on boost/move/make_unique.hpp." huili80@… 13571 difference results in invalid output geometry Boost 1.66.0 To Be Determined Bugs Barend Gehrels new 2018-05-22T14:25:02Z 2018-05-22T14:25:02Z "The difference of the following polygons results in invalid output: using point_type = boost::geometry::model::d2::point_xy; typedef boost::geometry::model::ring polygon; // ring polygon op1, op2; boost::geometry::read_wkt(""POLYGON((-5.357134899522904 1.708858148436605, -5.357046447070072 1.70877395054338, -5.210065937318399 -4.255706093497865, -8.65742840572935 -7.877265427733816, -9.246259311414669 -8.490599384498884, -8.647097810281494 -9.763145957490103, -5.287187110528729 -8.539478296007726, 4.07689365108185 -12.90390576571258, 6.997906000870004 3.116694062477888, -3.776939893600782 18.69699618899459, -3.858843408040787 18.57007309862488, -2.981468369027455 17.54675359552481, -4.116369566376584 2.772428265346094, -5.357134899522904 1.708858148436605))"", op1); boost::geometry::read_wkt(""POLYGON((-8.382184938267567 -5.157754480221099, -11.2072487852155 -5.954897113329205, -12.6412056272337 -8.516183878234685, -11.8440629941256 -11.34124772518262, -9.282776229220117 -12.77520456720082, -6.457712382272181 -11.97806193409271, -5.023755540253982 -9.416775169187234, -5.820898173362086 -6.591711322239298, -8.382184938267567 -5.157754480221099))"", op2); boost::geometry::validity_failure_type type0 = boost::geometry::no_failure; bool v0 = boost::geometry::is_valid(op1, type0); boost::geometry::validity_failure_type type1 = boost::geometry::no_failure; bool v1 = boost::geometry::is_valid(op2, type1); std::vector polyOutTemp; boost::geometry::difference(op1, op2, polyOutTemp); boost::geometry::validity_failure_type type3 = boost::geometry::no_failure; bool v2 = boost::geometry::is_valid(polyOutTemp[0], type3); polyOutTemp[0] is invalid because of self intersections. It seems to be a precision issue, since the self intersection occurs in a part of the polygon that should not affected by the difference algorithm." anonymous 13570 asio_handler_invoke resume wrong thread in coroutine asio Boost 1.67.0 To Be Determined Bugs chris_kohlhoff new 2018-05-21T09:58:20Z 2018-05-21T09:58:20Z "Environment:\\ Windows 10, VS2015 Update3, Boost 1.65.1, Boost 1.67.0, x86/x64\\ Coroutine should be suspended and resumed by the same thread, but in boost 1.67.0 it doesn't. I guess it's a bug introduced since boost 1.66. In Boost 1.65.0, correct behavior, output:\\ thread : 37c0\\ thread : 37c0\\ hello\\ In Boost 1.67.0, wrong behavior, output:\\ thread : df4\\ thread : 1844\\ hello\\ {{{ #include #include #include #include #include std::string Test(boost::asio::io_service& ios, boost::asio::yield_context yield) { boost::asio::io_service::work work(ios); #if BOOST_VERSION >= 106600 boost::asio::async_completion< boost::asio::yield_context, void(boost::system::error_code, std::string)> init(BOOST_ASIO_MOVE_CAST(boost::asio::yield_context)(yield)); auto handler = init.completion_handler; #else boost::asio::detail::async_result_init< boost::asio::yield_context, void(boost::system::error_code, std::string)> init(BOOST_ASIO_MOVE_CAST(boost::asio::yield_context)(yield)); auto handler = init.handler; #endif boost::thread t([&handler]() { boost::this_thread::sleep_for(boost::chrono::seconds(2)); boost::asio::detail::asio_handler_invoke( boost::bind( handler, boost::system::error_code(), ""hello""), &handler); }); t.detach(); return init.result.get(); } int main(int argc, char* argv[]) { boost::asio::io_service ios; boost::asio::spawn(ios, [&ios](boost::asio::yield_context yield) { boost::system::error_code ec; std::cout << ""thread : "" << boost::this_thread::get_id() << std::endl; std::string msg = Test(ios, yield[ec]); std::cout << ""thread : "" << boost::this_thread::get_id() << std::endl; std::cout << msg << std::endl; }); ios.run(); std::string tmp; std::cin >> tmp; return 0; } }}} " pengying.wu@… 13569 Broken build on newer versions of LLVM atomic Boost 1.63.0 To Be Determined Patches timblechmann new 2018-05-18T21:45:49Z 2018-05-18T21:45:49Z "Starting with LLVM r331746, the use of compare-and-swap on a const object is not allowed. On x86 and Clang, this breaks several places in atomic/detail/ops_gcc_x86_dcas.hpp, like this: {{{ if defined(__clang__) // Clang cannot allocate eax:edx register pairs but it has sync intrinsics value = __sync_val_compare_and_swap(&storage, (storage_type)0, (storage_type)0); #elif defined(BOOST_ATOMIC_DETAIL_X86_NO_ASM_AX_DX_PAIRS) ... }}} The use of compare-and-swap is actually a workaround for a Clang limitation which hasn't existed for a long time. Clang versions newer than 4.0.1 understand ""=&A"" contraints. I am attaching a proposed patch to ops_css_x86_dcas.hpp and config.hpp which detects the Clang version (using a __has_feature), and if it's new enough, uses the ""=&A"" constraint, otherwise falls back to the existing compare-and-swap. (I had to do a bit of fancy footwork with the #ifs to make this happen.) " Emil Gilliam 13568 no referenceto boost::regex libraries error in compilation regex Boost 1.65.0 Boost 1.65.0 Support Requests John Maddock new 2018-05-18T13:58:20Z 2018-05-18T13:58:20Z "- I am compiling a project on an Linux machine (Ubuntu 16.04) and running into build errors that mention undefined references to boost:re_detail_106300 -all the functions in my projects that use the boost::regex library are flagged as no reference " anonymous 13567 io_context ::run() doesn't return immediately on stopped io_context due to Windows implementation asio Boost 1.67.0 To Be Determined Bugs chris_kohlhoff new 2018-05-16T08:27:11Z 2018-05-16T08:27:11Z "This code hangs, when running on Windows: {{{ boost::asio::io_context context; // 1 boost::asio::post(context, []() { for (;;); }); // 2 context.stop(); // 3 context.run(); // hangs in a handler, posted in 2 }}} [https://www.boost.org/doc/libs/1_67_0/doc/html/boost_asio/reference/io_context/stop.html io_context::stop] documentation says: Subsequent calls to run(), run_one(), poll() or poll_one() will return immediately until restart() is called. Which is, judging by example above, isn't true. Same goes for [https://www.boost.org/doc/libs/1_67_0/doc/html/boost_asio/reference/io_context/stopped.html io_context::stopped]: When an io_context object is stopped, calls to run(), run_one(), poll() or poll_one() will return immediately without invoking any handlers. and code example below: {{{ boost::asio::io_context context; // 1 boost::asio::post(context, []() { for (;;); }); // 2 context.stop(); // 3 if (context.stopped()) { context.run(); // hangs in a handler, posted in 2 } }}} When running on Linux, same code fully complies the documentation and doesn't invoke any handlers in examples provided." cvzakharchenko@… 13566 difference and intersection yield wrong result geometry Boost 1.66.0 To Be Determined Bugs Barend Gehrels new 2018-05-16T06:51:43Z 2018-05-16T07:01:10Z "We are developing new algorithm that will hopefully be based on boost::geometry. Unfortunately we have come across some errors in the difference and intersection computations (possibly related to #13522 and #13553), which are a central part of the algorithm. I posted my original problem as a comment in #13522 (https://wandbox.org/permlink/ThHHAW13DOdHbgEx) After reading #13553 I tried out the define BOOST_GEOMETRY_NO_ROBUSTNESS which at first seemed to work. However, I then ran into a problem at another position (https://wandbox.org/permlink/8YH8EiIRMtsUd1LH) The two polygons have finite, not too small intersection, but both the intersection and the difference are empty. The problem seems be that the two geometries overlap almost exactly in one vertex (0.0054, -0.02436) - this is the second vertex of the green polygon and the first vertex of the blue polygon. Changing the coordinate (0.0054) in the green polygon only slightly yields the correct result. " Henrik Zimmer 13565 Compilation issue with property_tree on VS2017 15.7 property_tree Boost 1.67.0 Boost 1.68.0 Bugs Sebastian Redl new 2018-05-15T10:05:28Z 2018-05-15T11:59:32Z "The new Visual Studio 2017 15.7 with following compiler settings: Conformance mode: Yes(/permissive-) C++ Language Standard: ISO C++17 Standard (/std:c++17) generates following error: Error C3203 'iterator': unspecialized class template can't be used as a template argument for template parameter 'Iterator', expected a real type : public boost::reverse_iterator during the compilation of the following code: std::string value = { ""[GENERAL]\n"" ""MyValue=42"" }; namespace bpt = boost::property_tree; bpt::ptree tree; try { std::istringstream input(value); bpt::read_ini(input, tree); // Parse the INI-File into the property tree. } catch (...) { } int const v = tree.get(""GENERAL.MyValue"", 0); It looks like it has something todo with the deprecation of std::iterator in C++17. In case the Conformance mode is switched to ""No"", the code compiles without any errors. It is also dependent on project configuration and include order, since my first try to create an isolated project for demonstration didn't resulted in the same error. But I didn't invest much time for it. Here is my proposal for the solution of the issue: Prefix the template parameter to make them fully qualified. Change lines 112 and 122: class basic_ptree::reverse_iterator : public boost::reverse_iterator and class basic_ptree::const_reverse_iterator : public boost::reverse_iterator to: class basic_ptree::reverse_iterator : public boost::reverse_iterator::iterator> and class basic_ptree::const_reverse_iterator : public boost::reverse_iterator::const_iterator> This resolves the issue on my side. " Pavel Pokutnev 13564 Compile error of asio::async_read_until asio Boost 1.67.0 To Be Determined Bugs chris_kohlhoff new 2018-05-13T11:28:16Z 2018-07-02T15:31:39Z "I have a new compile error after moving from asio in 1.65.1 to asio in 1.67.0. Same code which compiled fine before. async_read_until uses read_until_delim_string_op in read_until.hpp, and the ctor has been rewritten in 67.0. It seems to want now to copy the buffer in the first constructor. Buffers are non copyable, so there is a compile error. The 67.0 ctor is now a template: template read_until_delim_string_op(AsyncReadStream& stream, BOOST_ASIO_MOVE_ARG(BufferSequence) buffers, const std::string& delim, ReadHandler& handler) : stream_(stream), buffers_(BOOST_ASIO_MOVE_CAST(BufferSequence)(buffers)), delim_(delim), start_(0), search_position_(0), handler_(BOOST_ASIO_MOVE_CAST(ReadHandler)(handler)) { } In 65.1 the ctor was: read_until_delim_op(AsyncReadStream& stream, boost::asio::basic_streambuf& streambuf, char delim, ReadHandler& handler) : stream_(stream), streambuf_(streambuf), delim_(delim), start_(0), search_position_(0), handler_(BOOST_ASIO_MOVE_CAST(ReadHandler)(handler)) I have gcc 8.1. Not sure if this is a bug (it sounds like it), therefore logging this as ""Support Request"" for now." Vincent Lextrait 13563 Error deserializing empty forward_list serialization Boost 1.67.0 To Be Determined Patches Robert Ramey new 2018-05-11T12:03:11Z 2018-05-11T12:03:11Z "Deserializing an empty forward_list is broken if the elements aren't default constructible (with old compilers it's enough that elements have a non-trivial default constructor). A patch is attached. The problem is that the first element is always loaded first, even if the list is empty. The result may be a crash or any undefined behavior, since deserialization goes out of sync. Test case: {{{ #include #include #include #include #include #include struct Foo { int x; Foo(int a) : x(a) {}; template void serialize(Archive& ar, const unsigned int) { ar & x; } private: friend class boost::serialization::access; Foo() = default; }; int main() { std::forward_list flist; std::ostringstream oss; boost::archive::binary_oarchive oa{oss}; oa << flist; std::istringstream iss{oss.str()}; boost::archive::binary_iarchive ia{iss}; ia >> flist; } }}} Results in: {{{ terminate called after throwing an instance of 'boost::archive::archive_exception' what(): input stream error Aborted (core dumped) }}}" Maximiliano Pin 13562 Missing null pointer check in compensating_work_started asio Boost 1.66.0 To Be Determined Bugs chris_kohlhoff new 2018-05-08T08:01:20Z 2018-05-09T09:28:41Z "In boost/asio/detail/impl/scheduler.ipp(275): {{{ void scheduler::compensating_work_started() { thread_info_base* this_thread = thread_call_stack::contains(this); ++static_cast(this_thread)->private_outstanding_work; } }}} there is a missing null pointer check for this_thread, other routines have one! I saw the error comming from boost/asio/detail/impl/epoll_reactor.ipp(712): {{{ 688 struct epoll_reactor::perform_io_cleanup_on_block_exit 689 { 690 explicit perform_io_cleanup_on_block_exit(epoll_reactor* r) 691 : reactor_(r), first_op_(0) 692 { 693 } 694 695 ~perform_io_cleanup_on_block_exit() 696 { 697 if (first_op_) 698 { 699 // Post the remaining completed operations for invocation. 700 if (!ops_.empty()) 701 reactor_->scheduler_.post_deferred_completions(ops_); 702 703 // A user-initiated operation has completed, but there's no need to 704 // explicitly call work_finished() here. Instead, we'll take advantage of 705 // the fact that the scheduler will call work_finished() once we return. 706 } 707 else 708 { 709 // No user-initiated operations have completed, so we need to compensate 710 // for the work_finished() call that the scheduler will make once this 711 // operation returns. 712 reactor_->scheduler_.compensating_work_started(); 713 } 714 } }}} " michael.lindig@… 13560 Cannot build --with-python --with-mpi --python-buildid=py36 python=3.6 mpi Boost 1.66.0 To Be Determined Bugs Matthias Troyer new 2018-05-03T11:43:37Z 2018-05-03T11:43:37Z "For a long time, debian would do multiple build configs of boost. First, build boost without python. Then build boost for each supported python version, including mpi/mpi-python/numpy. However, this does not appear to quite work. Previously boost_python introduced boost_python2 and boost_python3 libraries pointing at the default versions of respective major series. But in master/1.66/1.67 these appear to be gone. However, mpi Jamfile still refers to boost_python3 library which no longer exists. Either it is a bug in boost_python that it has dropped boost_python2 and boost_python3 aliases. Or it is a bug in mpi Jamfiles and it should stop using boost_python2 and boost_python3 aliases and simply compile against ""boost_python"" and use a matching buildid. I've proposed a patch to make mpi build against 'boost_python' without iterating for 2 3 major versions here https://github.com/boostorg/mpi/pull/58/files Components are mpi&python " Dimitri John Ledkov 13559 boost::program_options::detail::make_vector class removed? program_options Boost 1.67.0 To Be Determined Bugs Vladimir Prus new 2018-05-02T23:30:04Z 2018-05-08T15:40:09Z "Boost v 1.66 contains this in program_options/detail/parsers.hpp namespace boost { namespace program_options { namespace detail { template std::vector > make_vector(Iterator i, Iterator e) { std::vector > result; // Some compilers don't have templated constructor for // vector, so we can't create vector from (argv+1, argv+argc) range for(; i != e; ++i) result.push_back(*i); return result; } } This is not present in v 1.67, and the release notes make no mention of the change. Was it left out inadvertently? Moved to a different library? " anonymous 13558 gcd(INT_MIN, INT_MIN) crashes integer Boost 1.67.0 To Be Determined Bugs Daryle Walker new 2018-05-02T20:28:08Z 2018-05-02T20:28:33Z "The following produces a SIGFPE for me: {{{#!c++ #include #include #include int main() { std::cout << boost::integer::gcd(INT_MIN, INT_MIN); } }}} because it simplifies `gcd(INT_MIN, INT_MIN)` => `gcd(INT_MIN % INT_MIN, INT_MIN)` => `gcd(0, INT_MIN)` => `gcd(0, INT_MIN % 0)` => gcd(0, SIGFPE)`. I'm actually not sure what the right behavior is (the documented behavior is that the return is always positive, and, for example, `gcd(-2, -2)` returns 2, but obviously you can't do that here). Boost 1.63 returned `INT_MIN` in this case, which seems like the best answer. Responsible commit: https://github.com/boostorg/integer/commit/beb68718640150f67fe5671bbbb7848d9e7170b8" Evan Driscoll 13557 Boost 1.67.0 chrono library Windows build installs NTFS junction chrono Boost 1.67.0 Boost 1.69 Bugs viboes new 2018-05-01T19:14:37Z 2018-09-11T18:57:46Z "While testing our internal build of Boost with the latest version, I noticed the following problem when building on Windows using MSVC 2015: During the build the following statements are logged: {{{ mklink-or-dir boost\chrono\stopwatches mklink /J ""boost\chrono\stopwatches"" ""libs\chrono\stopwatches\include\boost\chrono\stopwatches"" Junction created for boost\chrono\stopwatches <<===>> libs\chrono\stopwatches\include\boost\chrono\stopwatches }}} This command creates an NTFS junction, which is something new compared to any previous version of Boost I've used (which goes back to 1.50.0). My problem is that we're building Boost using our own CMake scripts and the CMake ""install"" command cannot handle NTFS junctions, it simply fails during our custom follow-up step that packages the built binaries and headers. I haven't seen NTFS junctions seen used before, so I wonder if this procedure was intentional or not. Is there an option to have the bjam install phase make a copy of those files instead of creating the junction?" george@… 13556 boost::geometry::within() is not finding a point within a segment geometry Boost 1.67.0 To Be Determined Bugs Barend Gehrels new 2018-05-01T17:20:11Z 2018-05-01T17:20:11Z "1). I construct two segment objects which intersect, and use geometry::intersection() to select the point where they intersect. 2). I use geometry::within() to check that the point is within each of the segments. I've found that if I use segments that are perpendicular, within() behaves as I would expect." Josiah Slack 13555 Crash when statically linked to the dynamic library when use dlopen. serialization Boost 1.66.0 To Be Determined Bugs Robert Ramey new 2018-05-01T15:48:05Z 2018-05-01T15:48:05Z "Hi! I have shared library under Linux that is statically linked to boost_serialization. I load my library twice durind my application wors by the use dlopen/dlclose. At the second dlopen I have: #0 boost::serialization::typeid_system::extended_type_info_typeid_0::is_less_than (rhs=..., this=0x1003730) at libs/serialization/src/extended_type_info_typeid.cpp:59 #1 boost::serialization::typeid_system::type_compare::operator() (this=0x863360, rhs=0xf838f0, lhs=0x1003730) at libs/serialization/src/extended_type_info_typeid.cpp:41 #2 std::_Rb_tree, boost::serialization::typeid_system::type_compare, std::allocator >::_M_get_insert_equal_pos (__k=, this=0x863360) at /usr/include/c++/7/bits/stl_tree.h:2069 #3 std::_Rb_tree, boost::serialization::typeid_system::type_compare, std::allocator >::_M_insert_equal ( __v=, this=0x863360) at /usr/include/c++/7/bits/stl_tree.h:2117 #4 std::multiset >::insert ( __x=, this=) at /usr/include/c++/7/bits/stl_multiset.h:498 #5 boost::serialization::typeid_system::extended_type_info_typeid_0::type_register (this=0x1003730, ti=...) at libs/serialization/src/extended_type_info_typeid.cpp:91 #6 0x00007fffd6023819 in boost::serialization::extended_type_info_typeid::extended_type_info_typeid (this=0x1003730) at /opt/boost/include/boost/serialization/extended_type_info_typeid.hpp:91 #7 0x00007fffd60231a0 in boost::serialization::singleton >::get_instance()::singleton_wrapper::singleton_wrapper() (this=0x1003730) at /opt/boost/include/boost/serialization/singleton.hpp:121 #8 0x00007fffd6023213 in boost::serialization::singleton >::get_instance () at /opt/boost/include/boost/serialization/singleton.hpp:142 #9 0x00007fffd6022e83 in boost::serialization::singleton >::get_const_instance () at /opt/boost/include/boost/serialization/singleton.hpp:156 #10 0x00007fffd6022aca in boost::archive::detail::oserializer::oserializer (this=0x1003710) at /opt/boost/include/boost/archive/detail/oserializer.hpp:116 #11 0x00007fffd6022744 in boost::serialization::singleton >::get_instance()::singleton_wrapper::singleton_wrapper() (this=0x1003710) at /opt/boost/include/boost/serialization/singleton.hpp:121 #12 0x00007fffd60227b7 in boost::serialization::singleton >::get_instance () at /opt/boost/include/boost/serialization/singleton.hpp:142 #13 0x00007fffd60166e9 in __static_initialization_and_destruction_0 (__initialize_p=1, __priority=65535) at /opt/boost/include/boost/serialization/singleton.hpp:173 #14 0x00007fffd60167ba in _GLOBAL__sub_I_archivebuilder.cpp(void) () at /home/misha/Documents/devel/svn/soac/trunk/diagnostic/dcsplugins/development/gui/qt/archivebuilder.cpp:233 #15 0x00007ffff7de640a in call_init.part () from /lib64/ld-linux-x86-64.so.2 #16 0x00007ffff7de6516 in _dl_init () from /lib64/ld-linux-x86-64.so.2 #17 0x00007ffff7dea67f in dl_open_worker () from /lib64/ld-linux-x86-64.so.2 #18 0x00007ffff4d59e5f in _dl_catch_exception () from /lib64/libc.so.6 #19 0x00007ffff7de9f1a in _dl_open () from /lib64/ld-linux-x86-64.so.2 #20 0x00007ffff2c8af96 in dlopen_doit () from /lib64/libdl.so.2 #21 0x00007ffff4d59e5f in _dl_catch_exception () from /lib64/libc.so.6 #22 0x00007ffff4d59eef in _dl_catch_error () from /lib64/libc.so.6 #23 0x00007ffff2c8b685 in _dlerror_run () from /lib64/libdl.so.2 #24 0x00007ffff2c8b051 in dlopen@@GLIBC_2.2.5 () from /lib64/libdl.so.2 Qt libraries are linked dynamically to all parts of my application." Kipa Mikhail 13554 NULL deference exception in boost::asio::ip::tcp::resolver::results_type asio Boost 1.66.0 To Be Determined Bugs chris_kohlhoff new 2018-05-01T09:27:44Z 2018-05-01T09:27:44Z "boost::asio::ip::tcp::resolver::results_type type triggers a NULL dereference exception when calling empty() on a default-initialized instance. How to reproduce: - instantiate a new boost::asio::ip::tcp::resolver::results_type class instance with the default parameterless constructor - call the empty() method, it should return true - notice the access violation crash triggered Code example: {{{#!c++ #include int main(int /*argc*/, char** /*argv*/) { boost::asio::ip::tcp::resolver::results_type test = boost::asio::ip::tcp::resolver::results_type(); if (test.empty()) printf(""ok""); } }}} Boost version: 1.66 Windows x64 vc141 Issue analysis: empty() is implemented as {{{#!c++ bool empty() const BOOST_ASIO_NOEXCEPT { return this->values_->empty(); } }}} but this->values_ returns NULL when the class is empty. A possible fix could be to NULL-check this->values_ and then call ->empty() (if still needed at all) {{{#!c++ bool empty() const BOOST_ASIO_NOEXCEPT { return !this->values_ || this->values_->empty(); } }}} Current workaround: I would suggest not to use .empty() at all currently but to rely on .begin() == .end() . Note that even if the code example above looks quite meaningless, .empty() crashes causes issue for example when checking if an address can be resolved using ip::basic_resolver::resolve function. The documentation states ""An empty range is returned if an error occurs"" so one expects to be able to check if the range is empty. P.S.: I had links to sources and documentation but the tracker kept saying ""Akismet says content is spam"". Please fix your tracker." giacomopoz@… 13553 intersection gives wrong result geometry Boost 1.66.0 Boost 1.68.0 Bugs Barend Gehrels assigned 2018-04-30T14:04:02Z 2018-05-16T06:21:26Z "The following polygons result in a wrong intersection: using point_type = boost::geometry::model::d2::point_xy; typedef boost::geometry::model::ring polygon; polygon op1, op2; boost::geometry::read_wkt(""POLYGON((7.7058932076134967 -11.523889618379748,8.0348094747518424 0.63492733448631888,7.7720440433489850 0.63492733448631888, 7.7058932076134967 -11.523889618379748))"", op1); boost::geometry::read_wkt(""POLYGON((2.6206910206017642 -32.773696844382265, 5.5835888947200090 -24.273798818378602, 6.7109368565951772 -20.023839227004206, 7.4191426214038723 -15.773870150408516, 7.7058941612236938 -11.523876267001913, -3.1025600674348395 -11.523582486001384, -3.1025610210450365 -32.773541282571529, 2.6206910206017642 -32.773696844382265))"", op2); std::vector result; boost::geometry::intersection(op1, op2, result); result is equal to op1, while op1 is mostly outside op2." marnix.berg@… 13551 m_storage may be used uninitialized in this function optional Boost 1.66.0 To Be Determined Bugs Fernando Cacciola new 2018-04-30T09:02:58Z 2018-04-30T09:02:58Z "Hi, in 1.66 was the following feature introduced: On newer compilers optional is now trivially-copyable for scalar Ts. This uses a different storage (just T rather than aligned_storage). We require the compiler to support defaulted functions. Gcc 4.4.7 in C++98 mode is incorrectly recognizes because Boost tries to use tc_optional_base however without C++11 defaulted functions are not working. This is causing boost::optional::.boost::optional_detail::tc_optional_base::m_storage’ may be used uninitialized in this function warning." lukasz.czajczyk@… 13550 Boost foreach library trigger warning in Qt foreach Boost Development Trunk To Be Determined Patches Eric Niebler new 2018-04-30T06:46:44Z 2018-05-10T16:46:27Z "Since I use [[https://github.com/KDE/clazy|clazy]] I have such warnings: {{{ warning: zero as null pointer constant foreach.hpp: 1100:77: note expanded from macro BOOST_FOREACH foreach.hpp: 1014:9: note expanded from macro BOOST_FOREACH_CONTAIN foreach.hpp: 942:13: note expanded from macro BOOST_FOREACH_SHOULD_COPY }}} I have a running pull request here: https://github.com/boostorg/foreach/pull/7" Martin Delille 13549 """Failed to register an intel toolset!"" despite ""iclvars.bat"" intel64 ran." build Boost 1.67.0 To Be Determined Bugs Vladimir Prus new 2018-04-28T09:10:37Z 2018-04-28T09:10:37Z "Moin Moin. Despite I ran ""iclvars.bat"" intel64 I do receive an.: ""Failed to register an intel toolset!"" despite Message in ""tools\build\src\tools\intel-win.jam"" due to.: if ! [ feature.values ] being true (, hence failing). I tried to google the syntax, but did not find any expression-list explaining.: [ feature.values ] Is there a syntax to print out the expressions.: Using.: ECHO $feature.values ; ECHO $(feature.values) ; ECHO ; ECHO $() ; just yields.: ________________ $feature.values ________________ So at least $feature.values does seem to be empty. But typing in ________________ call ""%VT_DLL_DIR%\..\..\..\compilers_and_libraries\windows\bin\iclvars.bat"" intel64 bootstrap.bat ________________ does compile a functional b2.exe/bjam.exe pair. Does anyone know, what happened here, or can someone privide help(-files) on the syntax used for the if-statement, please. 8^))) Tschüß, Michael. " boost@… 13548 typo in documentation Documentation Boost 1.67.0 To Be Determined Bugs Matias Capeletto new 2018-04-27T19:05:22Z 2018-04-27T19:05:22Z "https://www.boost.org/doc/libs/1_67_0/libs/regex/doc/html/boost_regex/format/boost_format_syntax.html Escape Sequences ... \x{DDDD} Outputs the character whose hexadecimal code point is 0xDDDDD <--**too many D**" howard.gleason@… 13547 """warning C6386: Buffer overrun while writing to 'mem': the writable size is 'size+1' bytes, but 'size' bytes might be written...""...->""https://svn.boost.org/trac10/attachment/ticket/13547/#ticket""." asio Boost 1.67.0 To Be Determined Patches chris_kohlhoff new 2018-04-27T15:03:14Z 2018-04-27T15:05:05Z "Moin Moin. For MSVC I saw a ""warning C6386: Buffer overrun while writing to 'mem': the writable size is 'size+1' bytes, but 'size' bytes might be written...""-warning, which I pragma'ed out, according to the attachment, maybe You want to do the same. Tschüß, Michael. P.S.: ->""https://svn.boost.org/trac10/attachment/ticket/13546/#ticket""." boost@… 13546 """boost\asio\placeholders.hpp"" is missing static modifiers for ""boost::arg<1>&error""..." asio Boost 1.67.0 To Be Determined Bugs chris_kohlhoff new 2018-04-27T14:58:41Z 2018-04-27T14:58:41Z "Moin Moin. For MSVC and ICL the fact, that, within an unnamed namespace ""boost\asio\placeholders.hpp"" is missing static modifiers for ""boost::arg<1>&error"" yields linker-errors... I did add a change-suggestion. Tschüß, Michael. " boost@… 13545 Missing SAL-Präfixes for windows-function-imports. winapi Boost 1.67.0 To Be Determined Patches Andrey Semashev new 2018-04-27T14:53:45Z 2018-05-01T21:58:48Z "Moin Moin. Regarding ""boost\winapi\dll.hpp"" I wanted to mention, that MSVC and ICL are mourning. The solution seemed to be to add the SAL-Präfixes for windows-function-imports, that MS always adds to its SDK-Headers. Maybe it is possible to amend the file or to skip the declarations, if an according header can be included from the Windows-10-SDK. A am attaching my version. Tschüß, Michael. P.S.: I would have been registering an account in order to verify myself, if I had seen an according link." boost@… 13544 remove_vertex broken for adjacency_list graph Boost 1.66.0 To Be Determined Bugs Jeremiah Willcock new 2018-04-27T12:59:47Z 2018-04-27T12:59:47Z "Create a graph with three nodes, with the third node having an edge to the first node. Calling remove_vertex on the second node will then corrupt the m_property attribute of the edge of the third node. The graph template parameters are as follows. I'm not including the property classes' content. {{{#!c++ typedef boost::adjacency_list Graph_t; }}} The culprit is the following method, in your adjacency_list.hpp. {{{#!c++ template inline void reindex_edge_list(EdgeList& el, vertex_descriptor u, boost::disallow_parallel_edge_tag) { typename EdgeList::iterator ei = el.begin(), e_end = el.end(); while (ei != e_end) { typename EdgeList::value_type ce = *ei; ++ei; if (ce.get_target() > u) { el.erase(ce); --ce.get_target(); el.insert(ce); } } } }}} When initializing the variable ce, its m_property field, which is a unique_ptr, is stolen from *ei, setting ei's field to null. If get_target is not bigger than u, ce is not re-inserted in el, leaving the old copy with the null pointer. Below is a suggested and tested fix. {{{#!c++ template inline void reindex_edge_list(EdgeList& el, vertex_descriptor u, boost::disallow_parallel_edge_tag) { typename EdgeList::iterator ei = el.begin(), e_end = el.end(); while (ei != e_end) { if (ei->get_target() > u) { typename EdgeList::value_type ce = *ei; ++ei; el.erase(ce); --ce.get_target(); el.insert(ce); } else { ++ei; } } } }}} " Rasmus Ahlberg 13543 documentation for allocation_command shows the wrong return type interprocess Boost 1.59.0 To Be Determined Bugs Ion Gaztañaga new 2018-04-26T17:06:47Z 2018-04-26T17:06:47Z "The documentation at https://www.boost.org/doc/libs/1_59_0/doc/html/interprocess/managed_memory_segments.html#interprocess.managed_memory_segments.managed_memory_segment_advanced_features.managed_memory_segment_expand_in_place shows the return type for allocation_command is ""std::pair"". The code doesn't match and just returns a ""T *"". The example also disagrees and shows: std::size_t * ret = managed_shm.allocation_command The pair would actually be nicer but either the code or the docs need updating. The same problem appears in later versions." matt.liberty@… 13539 Boost Polygon - MSVC 2017 - Ambiguous call to size() function polygon Boost 1.67.0 To Be Determined Bugs Lucanus Simonson new 2018-04-25T10:54:09Z 2018-04-25T10:57:36Z "We are currently switching our compiler from MSVC 2012 to MSVC 2017. Now I have problems compiling out application using Boost Polygon. I get the following error: c:\khand\win64\include\boost\polygon\polygon_traits.hpp(606): error C2668: ""boost::polygon::size"": ambiguous call to overloaded function c:\khand\win64\include\boost\polygon\polygon_traits.hpp(467): note: could be ""unsigned __int64 boost::polygon::size(const T &)"" with [ polygon_type=DESIGN::GTL::Polygon, T=DESIGN::GTL::Polygon ] C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.13.26128\include\xutility(1611): note: or ""unsigned __int64 std::size(const _Container &)"" [bei der Verwendung der argumentbezogenen Suche gefunden] with [ polygon_type=DESIGN::GTL::Polygon, _Container=DESIGN::GTL::Polygon ] In size() function in polygon_traits.hpp conflicts with the now in C++ standard contained std::size(). I could solve the problem by using the completed name boost:polygon::size() in polygon_traits.hpp. Please see appended diff." Kai Benndorf 13538 Issue in addressof.hpp? smart_ptr Boost 1.67.0 To Be Determined Support Requests Peter Dimov new 2018-04-25T01:19:18Z 2018-05-10T17:03:58Z "I'm trying to build pCloudCC and not sure if this is a Boost problem or a pCloud problem: [ 40%] Building CXX object CMakeFiles/pcloudcc_lib.dir/pclsync_lib.cpp.o In file included from /root/build/console-client-master/pCloudCC/pclsync_lib.cpp:30:0: /root/build/console-client-master/pCloudCC/lib/pclsync/pcompat.h:95:0: warning:""_GNU_SOURCE"" redefined [enabled by default] #define _GNU_SOURCE ^ :0:0: note: this is the location of the previous definition In file included from /usr/local/include/boost/smart_ptr/detail/local_sp_deleter.hpp:20:0, from /usr/local/include/boost/smart_ptr/shared_ptr.hpp:1158, from /usr/local/include/boost/shared_ptr.hpp:17, from /root/build/console-client-master/pCloudCC/pclsync_lib.cpp:45: /usr/local/include/boost/smart_ptr/detail/local_counted_base.hpp: In member function ‘void boost::detail::local_counted_base::add_ref()’: /usr/local/include/boost/smart_ptr/detail/local_counted_base.hpp:67:49: error: __builtin_assume’ was not declared in this scope __builtin_assume( local_use_count_ >= 1 ); ^ In file included from /usr/local/include/boost/smart_ptr/detail/sp_counted_impl.hpp:29:0, from /usr/local/include/boost/smart_ptr/detail/shared_count.hpp:30, from /usr/local/include/boost/smart_ptr/shared_ptr.hpp:28, from /usr/local/include/boost/shared_ptr.hpp:17, from /root/build/console-client-master/pCloudCC/pclsync_lib.cpp:45: /usr/local/include/boost/core/addressof.hpp: In instantiation of ‘T* boost::addressof(T&) [with T = int (*)(_IO_FILE*)]’: /usr/local/include/boost/smart_ptr/detail/sp_counted_impl.hpp:182:98: required from ‘void* boost::detail::sp_counted_impl_pd::get_local_deleter(const sp_typeinfo&) [with P = _IO_FILE*; D = int (*)(_IO_FILE*); boost::detail::sp_typeinfo = std::type_info]’ /root/build/console-client-master/pCloudCC/pclsync_lib.cpp:304:1: required from here /usr/local/include/boost/core/addressof.hpp:40:33: error: ‘__builtin_addressof’ was not declared in this scope return __builtin_addressof(o);" Josh 13537 serializable unordered_map has incorrect template signature serialization Boost 1.67.0 To Be Determined Bugs Robert Ramey new 2018-04-24T22:23:10Z 2018-04-24T22:23:10Z "In boost/serialization/unordered_map.hpp the template signature looks like this: {{{ template< class Archive, class Key, class HashFcn, class EqualKey, class Allocator > }}} Whereas it should be: {{{ template< class Archive, class Key, class Type, class HashFcn, class EqualKey, class Allocator > }}} The consequence is that if a custom allocator is specified then the serialization will cause compiler errors due to there being insufficient template parameters. " David Hawkes 13535 xpressive miss captured groups name while assign a match_results object to another. xpressive Boost 1.67.0 To Be Determined Bugs Eric Niebler new 2018-04-23T10:48:24Z 2018-04-23T10:48:24Z "example: {{{ cmatch match; cmatch mat2; cregex rex = tcompile(""(?P\\d{5})""); if( regex_match(""error10205"",match,rex) ) { mat2 = match; string strErr = mat[""ErrorCode""]; // Here will not get the match string } }}} It's cause by funciton: **void swap(match_results &that)** in **match_results.hpp** file. I had fix the bug, by adding == this->named_marks_.swap(that.named_marks_); after line 668. " hyd 13534 icu support windows7 x64 failed regex Boost 1.67.0 To Be Determined Bugs John Maddock new 2018-04-20T21:44:14Z 2018-04-20T22:22:02Z "I'm trying to build any boost x64 version with icu support, but have't reached success. Built both version of icu 32 and 64 bit. I tried following steps: in order to find icu dlls I set 0. set PATH=c:/icu/bin64;c:/icu/bin;%PATH% 1. bjam adress-model=64 sICU_PATH=c:/icu --toolset=msvc-14.0 ; got - has_icu builds : no - icu(64) : yes What should I think of it? By checking resulting libraries, I realized that support wasn't enabled. result: icu support DISABLED 2.bjam adress-model=32 sICU_PATH=c:/icu --toolset=msvc-14.0 ; got - has_icu builds : yes - icu(64) : yes By checking resulting libraries, I found that support was enabled. result: icu support ENABLED any ideas?" stoneGuard 13530 str##A##B ? python USE GITHUB Boost 1.67.0 To Be Determined Bugs Ralf W. Grosse-Kunstleve new 2018-04-20T06:34:58Z 2018-04-20T06:34:58Z "#define BOOST_LIB_NAME boost_python##PY_MAJOR_VERSION##PY_MINOR_VERSION 1>LINK : fatal error LNK1104: 无法打开文件“boost_pythonPY_MAJOR_VERSIONPY_MINOR_VERSION-vc141-mt-gd-x64-1_67.lib”" anonymous 13526 Boost.Interprocess named_semaphore fail with C# interprocess Boost 1.66.0 To Be Determined Bugs Ion Gaztañaga new 2018-04-17T12:49:45Z 2018-04-17T12:49:45Z "I am using Boost.Interprocess named semaphore under Windows. The problem is with shared memory if I use marshalling between C# and C code (C wrapper around C++ code). The segfault occured. I found the place where the problem occured and post a ticket to stackowerflow. [https://stackoverflow.com/questions/49383042/boost-interprocess-v1-66-get-bootstamp-segfault-with-c-sharp] No one response so I decided report a bug(?)." janmkubalek@… 13524 Parameter mismatch on make_controlled factory (incorrectly constructed controlled_runge_kutta) odeint Boost Release Branch To Be Determined Bugs karsten new 2018-04-16T15:41:21Z 2018-04-16T15:50:13Z "While constructing a ''controlled_runge_kutta'' (might also affect other) using the ''make_controlled'' factory, the constructor of ''controlled_runge_kutta'' gets passed the wrong parameters. The factory calls the constructor with ''(abs_error, rel_error, stepper)'', instead of the actual parameters of the constructor ''(error_checker, step_adjuster, stepper)''. (see ''""boost/numeric/odeint/stepper/generation/make_controlled.hpp:44""'' and ''""boost/numeric/odeint/stepper/controlled_runge_kutta.hpp:247""'') This yields no compile error, since the respective class has the type of these paramerts as templates and the constructors of the actual expected types have all default parameters, without being explicit. This leads to the practically invisible error, where the passed values construct the types, expected by the constructor of controlled_runge_kutta, by populating the first parameter each (effectivly using these constructors as conversion constructors). Note: This leads to the maximal step size being set to the relative error limit and the relative error limit being set to the default value of 10^-6^. Since one usually sets the relative error limit to a rather low value (like the default 10^-6^), this causes the controller to split usually small enough steps into even smaller, thus thousands of, substeps, drastically increasing computation time. I was able to notice this behavior while debugging why my calculation of the controlled runge kutta uses unreasonably many substeps, while the constant step size runge kutta got a error estimated much lower then the error limit of the controller while doing the whole interval in only one step. " J.Saffer 13522 Invalid empty result using boost::geometry::difference geometry Boost 1.66.0 To Be Determined Bugs Barend Gehrels assigned 2018-04-16T09:43:01Z 2018-05-16T06:21:58Z "Hello, executing the following polygon difference operation sequence produces an obviously incorrect empty result. The first difference produces a (possibliy) valid result with a spike which might be the actual problem. The third difference with the previous result generates an empty result. The intermediate difference is required the reproduce this behaviour. Without it the result of the third difference is correct. Removing the spike from step one also solves the problem. Code to reproduce this: using point_type = boost::geometry::model::d2::point_xy; using polygon = boost::geometry::model::polygon; using multi_polygon = boost::geometry::model::multi_polygon; BoostGeometryBridge::Polygon2d_t Right[3]; BoostGeometryBridge::MultiPolygon2d_t Left[4]; boost::geometry::read_wkt(""MULTIPOLYGON(((0.747399249902131135 -0.974867609298678328,0.744720465461241043 -0.984866128861542012,0.737400169703072983 -0.992186849248596014,0.72740024741975795 -0.994866631198703,0.169444950081761997 -0.994882813404528998,0.156263880981993009 -0.992649068186161054,0.144555091741144004 -0.986196591543298973,0.135626528763234999 -0.976246166252738967,0.0970341390445131069 -0.91515608670535098,0.0527935015388215009 -0.831873652851741974,0.0149278636239085008 -0.745505885364162957,-0.016349202846282801 -0.656539920475841976,-0.0408612872409169006 -0.56547754891590496,-0.0584701351532070993 -0.472832385681689005,-0.0690764281904878985 -0.379126973119241983,-0.0726203441553292944 -0.284889833651171986,-0.0690818944579700972 -0.19065248877542601,-0.058481036857029399 -0.0969464611485150035,-0.0408775628926898033 -0.00430027666216776031,-0.0163707606471800993 0.086763516577464006,0.0149011452653820004 0.17573129555438699,0.0527617733210207981 0.262101259307556012,0.0969975799226773933 0.345386259216249991,0.135586426022915013 0.406478577227274984,0.144514411807557003 0.416429520405822984,0.156222826750318011 0.422882676210660002,0.169403766258661992 0.42511718599825099,0.727359063596658029 0.425133368204076989,0.737359141304932963 0.422454166307816015,0.744679861691986966 0.415133870549649009,0.747359067455327319 0.405136098375181386,0.747329770868999987 1.43513394783313997,2.74732976755064007 1.43524915817017007,2.74708725756255978 5.64524915118547987,-2.74750006237453981 1.25999999251885009,-2.74749997944197011 -4.43500000748115042,0.747500020558034994 -4.43500000604748035,0.747399249902131135 -0.974867609298678328),(-2.49638915854706989 0.152811596222504009,-1.75719536363572004 1.80498971421238008,-1.01782283569549992 1.4741902811305001,-1.75234596398119002 -0.167548384003570999,-1.76762179055725999 -0.173243028570225999,-2.49638915854706989 0.152811596222504009)))"", Left[0]); boost::geometry::read_wkt(""POLYGON((-1.57590744074229994 2.19505211912179998,-2.74750006237453981 1.25999999251885009,-2.74750004134586989 -0.184043917378418992,-1.76796680349592994 -0.184043903114115004,-1.74492840055212994 -0.175455463366190001,-1.00461083616106994 1.47923439340570995,-1.57590744074229994 2.19505211912179998))"", Right[0]); boost::geometry::read_wkt(""POLYGON((2.74708725756255001 5.64524915118547987, 1.48149582377297007 4.63517624723808019, 2.7471454369183701 4.6352491528611397, 2.74708725756255001 5.64524915118547987))"", Right[1]); boost::geometry::read_wkt(""POLYGON((-2.74749997944197011 -4.43500000748115042, -2.74750006237453981 1.25999999251885009, -3.11250006493298015 1.43568817247817004, -3.11249997689355018 -4.61000000763086959, -2.74749997944197011 -4.43500000748115042))"", Right[2]); for(int i = 0; i < 3; i++) { boost::geometry::difference(Left[i], Right[i], Left[i + 1]); } Final result in Left[3] is empty. " lehnert@… 13520 Cant add capture-by-move lambda to channel context Boost 1.66.0 To Be Determined Bugs olli new 2018-04-15T14:06:50Z 2018-04-15T14:42:45Z "The following code isnt working if the `test` is move-only {{{ using task = std::function; boost::fibers::buffered_channel ch{1024}; test tst; ch.push([t{std::move(tst)}]() { t.print(); }); }}} Full repro: http://coliru.stacked-crooked.com/a/88dec3ea76a41ea1 " kreuzerkrieg@… 13519 Invalid result for boost::geometry::difference geometry Boost 1.66.0 To Be Determined Bugs Barend Gehrels new 2018-04-13T15:21:42Z 2018-05-02T15:32:01Z "Hello, executing the following polygon difference operation produces an obviously incorrect result. From a relatively large face a small face is subtracted and the result is very small. Code snippet: using point_type = boost::geometry::model::d2::point_xy; using polygon = boost::geometry::model::polygon; using multi_polygon = boost::geometry::model::multi_polygon; polygon op1, op2; multi_polygon result; boost::geometry::read_wkt(""MULTIPOLYGON(((-1.54499301090586272 0.996130119403307535, -1.54499299947730218 0.99761525234323567, -1.54655249947779994 0.995186041738558957, -1.54499301090586272 0.996130119403307535)), ((-1.54655249947779994 0.995186041738558957, -1.54499301719928761 0.995312293499367451, -1.54499301635595665 0.995421883734666779, -1.54655249947779994 0.995186041738558957)), ((-1.5466074994591299 1.08624204173854011, -1.54631431516927331 1.08619819902499004, -1.54633399044383202 1.08621614521949872, -1.5466074994591299 1.08624204173854011)), ((-1.5466074994591299 1.08624204173854011, -1.54499299946018764 1.08107828103308101, -1.54499301135365474 1.08339600649103418, -1.5466074994591299 1.08624204173854011)), ((-1.53918049946492008 1.05799404173705991, -1.5466074994591299 1.08624204173854011, -1.54634340852929708 1.08622473535414787, -1.99999999954877006 1.5, -1.99999999954877006 0.5, -1.54499301954877 0.995006979999999985, -1.54499301770602582 0.995246443249784174, -1.54655249947779994 0.995186041738558957, -1.54499299947244828 1.02129648988327593, -1.5449929994644851 1.06013330832250108, -1.5466074994591299 1.08624204173854011, -1.54499299946029955 1.08053288029024164, -1.53891949946469997 1.05905604173701007, -1.53918049946492008 1.05799404173705991)))"", op1); boost::geometry::read_wkt(""POLYGON((-1.53581949946317997 1.06649704173632998, -1.5466074994591299 1.08624204173854011, -1.53723249946403007 1.06231704173661989, -1.53581949946317997 1.06649704173632998))"", op2); boost::geometry::difference(op1, op2, result); " lehnert@… 13517 Boost Small Container chokes MSVC+NVCC CUDA 9.1 container Boost 1.66.0 To Be Determined Bugs Ion Gaztañaga new 2018-04-12T06:36:18Z 2018-04-12T06:36:18Z "I wanted to file a bug to a problem I had a year ago that seems to be present in newer version of boost (https://stackoverflow.com/questions/42308279/is-boosts-small-vector-compatible-with-nvcc-8) Basically nvcc chokes when you include small_vector Steps to reproduce 1. One line program in kernel.cu #include //look ma, no main 2. Build with typical settings, on my machine: 1>------ Build started: Project: boost_test, Configuration: Debug x64 ------ 1> Compiling CUDA source file kernel.cu... 1> 1> C:\Users\Misha\documents\visual studio 2015\Projects\boost_test\boost_test>""C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1\bin\nvcc.exe"" -gencode=arch=compute_30,code=\""sm_30,compute_30\"" --use-local-env --cl-version 2015 -ccbin ""C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64"" -x cu -I""C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1\include"" -I""C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1\include"" -G --keep-dir x64\Debug -maxrregcount=0 --machine 64 --compile -cudart static -g -DWIN32 -DWIN64 -D_DEBUG -D_CONSOLE -D_MBCS -Xcompiler ""/EHsc /W3 /nologo /Od /FS /Zi /RTC1 /MDd "" -o x64\Debug\kernel.cu.obj ""C:\Users\Misha\documents\visual studio 2015\Projects\boost_test\boost_test\kernel.cu"" 1> kernel.cu 1>C:\Boost\include\boost-1_66\boost/container/small_vector.hpp(484): error C2332: 'struct': missing tag name 1> C:\Boost\include\boost-1_66\boost/container/small_vector.hpp(608): note: see reference to class template instantiation 'boost::container::small_vector' being compiled 1>C:\Boost\include\boost-1_66\boost/container/small_vector.hpp(484): warning C4346: 'boost::container::vector>::initial_capacity_t': dependent name is not a type 1> C:\Boost\include\boost-1_66\boost/container/small_vector.hpp(484): note: prefix with 'typename' to indicate a type 1>C:\Boost\include\boost-1_66\boost/container/small_vector.hpp(484): error C3646: 'initial_capacity_t': unknown override specifier 1>C:\Boost\include\boost-1_66\boost/container/small_vector.hpp(484): error C3254: 'boost::container::small_vector': class contains explicit override 'initial_capacity_t' but does not derive from an interface that contains the function declaration 1>C:\Boost\include\boost-1_66\boost/container/small_vector.hpp(484): error C2838: 'initial_capacity_t': illegal qualified name in member declaration 1>c:\users\misha\appdata\local\temp\tmpxft_0000af9c_00000000-6_kernel.cudafe1.stub.c(2): warning C4103: alignment changed after including header, may be due to missing #pragma pack(pop) 1>tmpxft_0000af9c_00000000-6_kernel.cudafe1.stub.c(1): warning C4103: alignment changed after including header, may be due to missing #pragma pack(pop) 1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations\CUDA 9.1.targets(707,9): error MSB3721: The command """"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1\bin\nvcc.exe"" -gencode=arch=compute_30,code=\""sm_30,compute_30\"" --use-local-env --cl-version 2015 -ccbin ""C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64"" -x cu -I""C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1\include"" -I""C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1\include"" -G --keep-dir x64\Debug -maxrregcount=0 --machine 64 --compile -cudart static -g -DWIN32 -DWIN64 -D_DEBUG -D_CONSOLE -D_MBCS -Xcompiler ""/EHsc /W3 /nologo /Od /FS /Zi /RTC1 /MDd "" -o x64\Debug\kernel.cu.obj ""C:\Users\Misha\documents\visual studio 2015\Projects\boost_test\boost_test\kernel.cu"""" exited with code 2. ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== " kandel3@… 13516 crash in boost regex regex Boost 1.63.0 To Be Determined Bugs John Maddock new 2018-04-09T13:53:50Z 2018-04-09T16:21:06Z "Using a specific search and replace expression containing named tags causes boost regex to crash. The pull request at https://github.com/boostorg/regex/pull/60/commits/124dd8d0d9c636436115ec988058a551c5fa39eb turns the crash into a regex exception. Attaching the search/replace expression and the file they are used on." Aron Pongo 13515 async_pipe::async_read_some returns zero read size if -O is used asio Boost 1.66.0 To Be Determined Bugs chris_kohlhoff new 2018-04-06T14:20:16Z 2018-08-01T19:59:31Z "Hi there, We are developing coroutine based application which sits mostly on some sort of I/O. Decided to go with coroutine based approach with boost 1.66 and asio/beast/process libs. While doing some internal POC we ran into issue with retrieving size of data obtained through pipe. {{{ #!div style=""font-size: 80%"" {{{#!C++ #include #include #include #include #include void test_process() { static const char* path = ""./dataspit.py""; static const char* interpreter = ""python3""; std::cout << ""Hello from streamer2\n""; namespace asio = boost::asio; namespace process = boost::process; namespace chrono = std::chrono; asio::io_context ioc; asio::spawn(ioc, [&ioc](asio::yield_context yield) { process::async_pipe pipe{ioc}; auto child = process::child{process::search_path(interpreter), path, process::std_out > pipe}; std::array buffer{0}; std::cout << ""Buffer state: "" << (int)buffer[0] << (int)buffer[1] << std::endl; boost::system::error_code read_ec; do { auto timePoint = chrono::system_clock::now(); std::cout << timePoint.time_since_epoch().count() << "": Sleeping\n""; std::size_t size = pipe.async_read_some(asio::buffer(buffer), yield[read_ec]); if (read_ec) { std::cerr << read_ec.message() << std::endl; break; } timePoint = chrono::system_clock::now(); std::cout << timePoint.time_since_epoch().count() << "": Read "" << size << "" bytes\n""; std::cout << ""Buffer state: "" << (int)buffer[0] << (int)buffer[1] << std::endl; } while (read_ec != boost::asio::error::eof); child.wait(); } ); ioc.run(); std::cout << ""Farewell from streamer2\n""; } int main(int argc, char** argv) { test_process(); return 0; } }}} }}} This code works fine when no compiler optimizations are used. As soon as its compiled with -Os or any numbered -O type. {{{ #!div style=""font-size: 80%"" {{{#!C++ pipe.async_read_some(asio::buffer(buffer), yield[read_ec]); }}} }}} starts returning 0. Buffer contents are modified though. Callback based approach yields same result. {{{ #!div style=""font-size: 80%"" {{{ ... readv(6, [{""57757488835088650590974423544437""..., 4096}], 1) = 1030 write(1, ""1523018074402113597: Read 0 byte""..., 341523018074402113597: Read 0 bytes) = 34 write(1, ""Buffer state: 5355\n"", 19Buffer state: 5355) = 19 write(1, ""1523018074402457408: Sleeping\n"", 301523018074402457408: Sleeping) = 30 readv(6, 0x83c2168, 1) = -1 EAGAIN (Resource temporarily unavailable) epoll_wait(4, [{EPOLLIN, {u32=138163408, u64=138163408}}], 128, -1) = 1 readv(6, [{""15827357453760420053575823774839""..., 4096}], 1) = 546 write(1, ""1523018076807802498: Read 0 byte""..., 341523018076807802498: Read 0 bytes) = 34 write(1, ""Buffer state: 4953\n"", 19Buffer state: 4953) = 19 write(1, ""1523018076808233410: Sleeping\n"", 301523018076808233410: Sleeping) = 30 readv(6, 0x83c2168, 1) = -1 EAGAIN (Resource temporarily unavailable) epoll_wait(4, [{EPOLLIN, {u32=138163408, u64=138163408}}], 128, -1) = 1 readv(6, [{""66365484273136085944223051047033""..., 4096}], 1) = 814 write(1, ""1523018079517434883: Read 0 byte""..., 341523018079517434883: Read 0 bytes) = 34 write(1, ""Buffer state: 5454\n"", 19Buffer state: 5454) = 19 write(1, ""1523018079517782099: Sleeping\n"", 301523018079517782099: Sleeping) = 30 readv(6, 0x83c2168, 1) = -1 EAGAIN (Resource temporarily unavailable) ... }}} }}} Epoll waits as expected, readv seems to return length as well. Looks like some kind of reordering issue. Tested this behavior on ubuntu 14.04/16.04 in 32/64bit modes on using stock gcc, all ran in docker containers within ubuntu 16.04 host. Issue applies to boost 1.66 for sure, tested also 1.65 and 1.67 beta on ubuntu 14.04 32 bit. Issue is there as well. Complete sample code in attachments. I'd be grateful for some notification if you find root cause and possible patch. I'd like to apply such to our boost sources. Best Regards, Tomasz Jonak" Tomasz Jonak 13514 can not build against boost 1.66.0 with MSVC 2015 due to range/concepts.hpp range Boost 1.66.0 To Be Determined Bugs Neil Groves new 2018-04-06T13:32:57Z 2018-04-18T20:00:10Z "I could build against boost 1.65.1 and earlier versions successfully with MSVC 2015, but not against boost 1.66.0 anymore with MSVC 2015 due to an error in range/concepts.hpp. Everything builds fine with MSVC 2017. The error was previously discussed here: https://groups.google.com/forum/#!topic/boost-developers-archive/g9VWZU47Khw The detailed error is: {{{ [4/196] Building CXX object lib\cpp\test\CMakeFiles\OpenSSLManualInitTest.dir\OpenSSLManualInitTest.cpp.obj FAILED: lib/cpp/test/CMakeFiles/OpenSSLManualInitTest.dir/OpenSSLManualInitTest.cpp.obj C:\PROGRA~2\MICROS~1.0\VC\bin\amd64\cl.exe /TP -DBOOST_ALL_DYN_LINK -DBOOST_ALL_NO_LIB -DBOOST_TEST_DYN_LINK -DFORCE_BOOST_SMART_PTR -DNOMINMAX -DUSE_STD_THREAD=1 -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Ilib\cpp\test -ID:\tmp\Debug\Shared\thrift-0.11.0\lib\cpp\test -I. -ID:\tmp\Debug\Shared\thrift-0.11.0\lib\cpp\src -I""C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt"" -ID:\Debug\Shared\include /MDd /Zi -I/d/Debug/Shared/include /DDEBUG /DWINVER=_WIN32_WINNT_WIN7 /D_WIN32_WINNT=_WIN32_WINNT_WIN7 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MDd /Zi /Ob0 /Od /RTC1 /MP /W3 /FIinttypes.h -DUNICODE -D_UNICODE /showIncludes /Folib\cpp\test\CMakeFiles\OpenSSLManualInitTest.dir\OpenSSLManualInitTest.cpp.obj /Fdlib\cpp\test\CMakeFiles\OpenSSLManualInitTest.dir\ /FS -c D:\tmp\Debug\Shared\thrift-0.11.0\lib\cpp\test\OpenSSLManualInitTest.cpp Microsoft (R) C/C++ Optimizing Compiler Version 19.00.24210 for x64 Copyright (C) Microsoft Corporation. All rights reserved. D:\Debug\Shared\include\boost/range/concepts.hpp(184): error C2143: syntax error: missing ';' before '<' D:\Debug\Shared\include\boost/range/concepts.hpp(209): note: see reference to class template instantiation 'boost::range_detail::ForwardIteratorConcept' being compiled D:\Debug\Shared\include\boost/range/concepts.hpp(184): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int D:\Debug\Shared\include\boost/range/concepts.hpp(184): error C2238: unexpected token(s) preceding ';' }}} " Mario Emmenlauer 13512 Starting from boost 1.67 boost build system for Intel compiler on Windows is broken. build Boost 1.67.0 Boost 1.67.0 Bugs Vladimir Prus new 2018-04-05T07:42:07Z 2018-04-05T09:15:11Z "Starting from boost 1.67 boost build system for Intel compiler on Windows is broken. {{{ $ cd boost_1_67_0/libs/array/test $ ../../../b2 toolset=intel-18.0 C:/Users/ikelarev/test3/boost_1_67_0/tools/build/src/tools\intel-win.jam:237: in configure-really ERROR: rule ""msvc.maybe-rewrite-setup"" unknown in module ""intel-win"". C:/Users/ikelarev/test3/boost_1_67_0/tools/build/src/tools\intel-win.jam:132: in configure C:/Users/ikelarev/test3/boost_1_67_0/tools/build/src/tools\intel-win.jam:46: in intel-win.init C:/Users/ikelarev/test3/boost_1_67_0/tools/build/src/build\toolset.jam:44: in toolset.using C:/Users/ikelarev/test3/boost_1_67_0/tools/build/src/tools\intel.jam:32: in intel.init C:/Users/ikelarev/test3/boost_1_67_0/tools/build/src/build\toolset.jam:44: in toolset.using C:/Users/ikelarev/test3/boost_1_67_0/tools/build/src\build-system.jam:543: in process-explicit-toolset-requests C:/Users/ikelarev/test3/boost_1_67_0/tools/build/src\build-system.jam:610: in load C:\Users\ikelarev\test3\boost_1_67_0\tools\build\src/kernel\modules.jam:295: in import C:\Users\ikelarev\test3\boost_1_67_0\tools\build\src/kernel/bootstrap.jam:139: in boost-build C:\Users\ikelarev\test3\boost_1_67_0\boost-build.jam:17: in module scope }}} With boost 1.66 this error does not appear." Ivan Kelarev 13511 Boost transformation has possible bug polygon Boost 1.62.0 To Be Determined Bugs Lucanus Simonson new 2018-04-04T18:25:58Z 2018-04-04T18:25:58Z "Applying multiple transformation & translation simultaneously do not produce desired result. **For example :** **Case 1 : Produces wrong result.** btr = boost::polygon::transformation(boost::polygon::axis_transformation::FLIP_X);\\ btr += boost::polygon::transformation(boost::polygon::axis_transformation::FLIP_XY);\\ res = boost::polygon::transform(object, btr); **Case 1 : Produces right result.** btr = boost::polygon::transformation(boost::polygon::axis_transformation::FLIP_X);\\ res = boost::polygon::transform(object, btr);\\ btr = boost::polygon::transformation(boost::polygon::axis_transformation::FLIP_XY);\\ res = boost::polygon::transform(res, btr); " asksoni@… 13510 Boost::intersection giving wrong results when intersection is calculated between 2 polygons in Boost-1.61, where as Boost-1.55 is giving correct results. geometry Boost 1.61.0 Boost 1.61.0 Bugs Barend Gehrels new 2018-04-04T09:11:40Z 2018-04-04T09:11:40Z "Hi, When calculating intersections between 2 polygons, the boost::geometry::intersection is giving wrong results in Boost-1.61 version, where as it is giving correct results in Boost-1.55 version. Here i am attaching the code snippet {{{ #include #include #include typedef boost::geometry::model::d2::point_xy point; typedef boost::geometry::model::ring ring; typedef boost::geometry::model::polygon Polygon; int main() { Polygon p1; Polygon p2; ring r1; ring r2; r1.push_back(point(0.112, -105.2361)); r1.push_back(point(-0.6946, -53.2131)); r1.push_back(point(-0.2526, 0.9022)); r1.push_back(point(86.4137, 0.8264)); r1.push_back(point(179.5712, 0.0198)); r1.push_back(point(180.78110000, -51.1967)); r1.push_back(point(182.3942, -104.4295)); r1.push_back(point(90.0432, -104.8328)); r1.push_back(point(0.112, -105.2361)); p1.outer() = r1; boost::geometry::correct(p1); r1.clear(); r1.push_back(point(-10.7918213256483, 54.2140961455332)); r1.push_back(point(113.309785590778, -17.5321453530258)); r1.push_back(point(17.8097208933718, -86.8545273414985)); r1.push_back(point(-72.8426247838616, -20.4407767651296)); r1.push_back(point(-10.7918213256483, 54.2140961455332)); r2.push_back(point(33.8071936599424, 20.2800630043229)); r2.push_back(point(-28.7283817002881, -38.3773371397694)); r2.push_back(point(12.4772299711817, -63.1007041426512)); r2.push_back(point(64.8325953890491, 4.28259023775226)); r2.push_back(point(33.8071936599424, 20.2800630043229)); p2.inners().push_back(r2); p2.outer() = r1; boost::geometry::correct(p2); std::vector intersections; boost::geometry::intersection(p1, p2, intersections); return 0; } }}} The 2nd point in the intersection result i.e 1st index in ""interesections"" is wrong. there is a difference of (0.00002) which will reduce the accuracy in computations. Boost-1.55 version: intersections[1] = (-0.66354193, -55.21624099) Boost-1.61 version: intersections[1] = (-0.66356150523, -55.216229256)" sumanth.kaliki@… 13509 Boost.Asio broken link in documentation asio Boost 1.66.0 To Be Determined Bugs chris_kohlhoff new 2018-04-03T15:32:27Z 2018-04-13T15:33:00Z "Hi, There is a broken link about 3rd party integration: https://www.boost.org/doc/libs/1_66_0/doc/html/boost_asio/example/cpp11/nonblocking/third_party_lib.cpp" anonymous 13507 Build issue for Boost 1.67.0 Beta 1 with Visual Studio 2017 15.6.4 and Intel Compiler 18.0.2 Building Boost Boost 1.67.0 To Be Determined Bugs new 2018-03-31T10:12:44Z 2018-03-31T10:12:44Z It seems that ''intel-win.jam'' file is outdated in Boost 1.67.0 Beta 1 since the ''maybe-rewrite-setup'' rule has been removed from the ''msvc.jam'' file. Jacek Blaszczyk 13506 Bootstrap.bat fails for Microsoft Visual Studio Community 15.6.4 Building Boost Boost 1.66.0 Boost 1.66.0 Bugs new 2018-03-31T03:57:22Z 2018-03-31T05:03:18Z ".\bootstrap.bat fails with the following message: cl : Command line error D8016 : '/O2' and '/RTC1' command-line options are incompatible" donald.h.ellison@… 13505 graph/detail/array_binary_tree.hpp:45:18: error: unknown template name 'iterator' graph Boost 1.67.0 To Be Determined Bugs Jeremiah Willcock new 2018-03-30T15:42:39Z 2018-03-31T10:24:28Z "Discovered this when building [https://github.com/dealii/dealii deal.II] against boost 1.67.0.b1 with Apple's Clang 9.1.0: {{{ 2449 In file included from /Users/davydden/spack/opt/spack/darwin-highsierra-x86_64/clang-9.1.0-apple/boost-1.67.0.b1-hfpvj4kx4lur5l6i2uhlp6kwlai5rbln/include/boost/graph/cuthill_mckee_ordering.hpp:15: 2450 In file included from /Users/davydden/spack/opt/spack/darwin-highsierra-x86_64/clang-9.1.0-apple/boost-1.67.0.b1-hfpvj4kx4lur5l6i2uhlp6kwlai5rbln/include/boost/graph/detail/sparse_ordering.hpp:18: 2451 In file included from /Users/davydden/spack/opt/spack/darwin-highsierra-x86_64/clang-9.1.0-apple/boost-1.67.0.b1-hfpvj4kx4lur5l6i2uhlp6kwlai5rbln/include/boost/pending/mutable_queue.hpp:20: >> 2452 /Users/davydden/spack/opt/spack/darwin-highsierra-x86_64/clang-9.1.0-apple/boost-1.67.0.b1-hfpvj4kx4lur5l6i2uhlp6kwlai5rbln/include/boost/graph/detail/array_binary_tree.hpp:45:18: error: unknown template name 'iterator' 2453 : boost::iterator 13502 Intel compiler detection under Windows failed predef USE GITHUB Boost 1.67.0 To Be Determined Bugs René Rivera new 2018-03-29T11:31:20Z 2018-04-04T13:47:08Z "BOOST_COMP_MSVC || (BOOST_COMP_INTEL && BOOST_OS_WINDOWS) is false under Windows with Intel C++ 18 on Visual Studio 2017. This causes problem with compilation of DLL library on alias.hpp:39" oley@… 13501 no matching function for call to 'hash_value' while compiling program with clang on osx hash Boost 1.64.0 To Be Determined Bugs Daniel James new 2018-03-29T11:26:49Z 2018-03-29T15:25:56Z "I am getting the following error while building an external program (augustus 3.3 with CGP and sqlite support, https://circleci.com/gh/bioconda/bioconda-recipes/6507) with clang on osx: {{{ include/boost/functional/hash/extensions.hpp:262:20: error: no matching function for call to 'hash_value' return hash_value(val); ^~~~~~~~~~ }}}" travis.wrightsman@… 13499 "Intel Compiler 2018 Windows error: overloaded function ""boost::scope_exit::detail::deref"" is not a type name" scope_exit Boost 1.65.0 To Be Determined Bugs Lorenzo Caminiti new 2018-03-28T19:51:14Z 2018-05-10T16:37:00Z "Im using the Intel Compiler 2018 from Parallel Studio XE 2018 Update 2 Composer Edition together with Visual Studio Community Edition 2015 Update 3 to build ''thrift'', a library that uses boost 1.65.1. I start the build from the Intel Compiler console. The build fails with errors: {{{ FAILED: lib/cpp/CMakeFiles/thrift_static.dir/src/thrift/windows/OverlappedSubmissionThread.cpp.obj D:\bda-ci\IntelSWTools\compilers_and_libraries\windows\bin\intel64\icl.exe /TP -DBOOST_ALL_DYN_LINK -DBOOST_ALL_NO_LIB -DBOOST_TEST_DYN_LINK -DFORCE_BOOST_SMART_PTR -DNOMINMAX -DUSE_STD_THREAD=1 -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Ilib\cpp -ID:\Debug\Shared\thrift-0.11.0\lib\cpp -I. -ID:\Debug\Shared\thrift-0.11.0\lib\cpp\src -I""C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt"" -ID:\Debug\Shared\include /MDd /Zi /arch:SSE4.2 -I/d/Debug/Shared/include /DDEBUG /DWINVER=_WIN32_WINNT_WIN7 /D_WIN32_WINNT=_WIN32_WINNT_WIN7 /Qwd1744 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MDd /Zi /Ob0 /Od /RTC1 /MP /W3 /FIinttypes.h -DUNICODE -D_UNICODE -Qstd=c++11 /showIncludes /Folib\cpp\CMakeFiles\thrift_static.dir\src\thrift\windows\OverlappedSubmissionThread.cpp.obj /Fdlib\cpp\CMakeFiles\thrift_static.dir\thrift_static.pdb -c D:\Debug\Shared\thrift-0.11.0\lib\cpp\src\thrift\windows\OverlappedSubmissionThread.cpp Intel(R) C++ Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 18.0.2.185 Build 20180210 Copyright (C) 1985-2018 Intel Corporation. All rights reserved. D:\Debug\Shared\thrift-0.11.0\lib\cpp\src\thrift\windows\OverlappedSubmissionThread.cpp(62): error: overloaded function ""boost::scope_exit::detail::deref"" is not a type name BOOST_SCOPE_EXIT((&doneSubmittingEvent)) { SetEvent(doneSubmittingEvent.h); } ^ D:\Debug\Shared\thrift-0.11.0\lib\cpp\src\thrift\windows\OverlappedSubmissionThread.cpp(62): error: expected a "")"" BOOST_SCOPE_EXIT((&doneSubmittingEvent)) { SetEvent(doneSubmittingEvent.h); } ^ D:\Debug\Shared\thrift-0.11.0\lib\cpp\src\thrift\windows\OverlappedSubmissionThread.cpp(62): error: expected a type specifier BOOST_SCOPE_EXIT((&doneSubmittingEvent)) { SetEvent(doneSubmittingEvent.h); } ^ D:\Debug\Shared\thrift-0.11.0\lib\cpp\src\thrift\windows\OverlappedSubmissionThread.cpp(62): error #303: explicit type is missing (""int"" assumed) BOOST_SCOPE_EXIT((&doneSubmittingEvent)) { SetEvent(doneSubmittingEvent.h); } ^ D:\Debug\Shared\thrift-0.11.0\lib\cpp\src\thrift\windows\OverlappedSubmissionThread.cpp(62): error: expected a "";"" BOOST_SCOPE_EXIT((&doneSubmittingEvent)) { SetEvent(doneSubmittingEvent.h); } ^ D:\Debug\Shared\thrift-0.11.0\lib\cpp\src\thrift\windows\OverlappedSubmissionThread.cpp(62): error: identifier ""boost_se_capture_t_0_62"" is undefined BOOST_SCOPE_EXIT((&doneSubmittingEvent)) { SetEvent(doneSubmittingEvent.h); } ^ compilation aborted for D:\Debug\Shared\thrift-0.11.0\lib\cpp\src\thrift\windows\OverlappedSubmissionThread.cpp (code 2) }}} I am under the impression that this error is related to boost, is that correct? Is there a workaround or solution?" Mario Emmenlauer 13498 Error compiling boost with Intel Compiler 2018 / Visual Studio 2015 on Windows Building Boost Boost 1.65.0 To Be Determined Bugs new 2018-03-28T19:13:53Z 2018-04-18T19:54:59Z "Im using the Intel Compiler 2018 from Parallel Studio XE 2018 Update 2 Composer Edition together with Visual Studio Community Edition 2015 Update 3 to build boost 1.65.1. I start the boost build from the Intel Compiler console. My build settings are: {{{ bootstrap.bat \ --with-icu=""D:/Debug/Shared"" \ --with-libraries=atomic,date_time,exception,filesystem,graph,program_options,regex,test,thread --with-toolset=""intel"" && \ b2 \ --prefix=""D:/Debug/Shared"" \ --layout=""system"" \ --debug-configuration \ -q \ --with-atomic --with-date_time --with-exception --with-filesystem --with-graph --with-program_options --with-regex --with-test --with-thread address-model=64 toolset=""intel-18.0-vc14"" \ link=shared \ runtime-link=shared \ pch=off \ architecture=""x86"" \ host-os=""windows"" \ target-os=""windows"" \ variant=debug \ threading=multi \ threadapi=win32 \ include=""D:/Debug/Shared/include"" \ cflags=""/FS /DDEBUG /DWINVER=_WIN32_WINNT_WIN7 /D_WIN32_WINNT=_WIN32_WINNT_WIN7 /Qwd1744 /MDd /Zi /arch:SSE4.2"" \ cxxflags=""/DDEBUG /DWINVER=_WIN32_WINNT_WIN7 /D_WIN32_WINNT=_WIN32_WINNT_WIN7 /Qwd1744 /std:c++11 /MDd /Zi /arch:SSE4.2"" \ linkflags=""/MACHINE:X64 /DEBUG /LIBPATH:D:/Debug/Shared/lib"" \ -sHAVE_ICU=1 \ -sICU_PATH=""D:/Debug/Shared"" \ -sICU_LINK=""-LD:/Debug/Shared\\lib -licuuc -licuin -licudt"" \ -sNO_BZIP2 \ -sNO_ZLIB \ -sNO_LZMA \ -j4 install }}} The build fails early on with errors that the compiler 'icl' is not found: {{{ [...] common.mkdir bin.v2\libs\system\build\intel-vc14-win-18.0\debug\address-model-64\architecture-x86\pch-off\threading-multi compile-c-c++ bin.v2\libs\atomic\build\intel-vc14-win-18.0\debug\address-model-64\architecture-x86\pch-off\threading-multi\lockpool.obj 'icl' is not recognized as an internal or external command, operable program or batch file. call ""C:\Users\bdaci01\AppData\Local\Temp\b2_intel-win_18.0_iclvars_intel64 vs2015.cmd"" > nul icl @""bin.v2\libs\atomic\build\intel-vc14-win-18.0\debug\address-model-64\architecture-x86\pch-off\threading-multi\lockpool.obj.rsp"" ...failed compile-c-c++ bin.v2\libs\atomic\build\intel-vc14-win-18.0\debug\address-model-64\architecture-x86\pch-off\threading-multi\lockpool.obj... ...skipped boost_atomic.dll for lack of lockpool.obj... ...skipped boost_atomic.dll for lack of boost_atomic.dll... compile-c-c++ bin.v2\libs\date_time\build\intel-vc14-win-18.0\debug\address-model-64\architecture-x86\pch-off\threading-multi\gregorian\greg_month.obj 'icl' is not recognized as an internal or external command, operable program or batch file. }}} I can build other packages fine, and I can call 'icl' from the same shell where boost complains that 'icl' is not recognized as an internal or external command, operable program or batch file." Mario Emmenlauer 13497 ‘next’ is not a member of ‘boost’ in spsc_queue.hpp in 1.67 lockfree Boost 1.67.0 To Be Determined Bugs timblechmann new 2018-03-28T14:36:55Z 2018-04-01T10:57:25Z "/usr/src/boost_1_67_0/boost/lockfree/spsc_queue.hpp: In member function ‘ConstIterator boost::lockfree::detail::ringbuffer_base::push(ConstIterator, ConstIterator, T*, boost::lockfree::detail::ringbuffer_base::size_t)’: /usr/src/boost_1_67_0/boost/lockfree/spsc_queue.hpp:140:43: error: ‘next’ is not a member of ‘boost’ const ConstIterator last = boost::next(begin, input_count); ^~~~ This didn't occur in boost 1.66." Riot 13496 ASIO: Ability to do a synchronous read with timeout on a socket asio Boost 1.67.0 To Be Determined Feature Requests chris_kohlhoff new 2018-03-28T07:11:19Z 2018-03-28T07:11:19Z "This is a restatement of the issue #2832, in a different form. It's clear there is an appetite to be able to perform a synchronous read with a timeout using asio. Issue #2832 raised this issue. The main objection there seemed to be the form in which the functionality was proposed. I don't think there was a fundamental objection to the requirement. Similar functionality DOES exist on the basic_socket_streambuf. You can set an ""expiry"". The read functionality in that class mirrors the code in the socket_opts::sync_recv, it just adds a timeout to the poll call (though it does also remove the initial blocking wait, but that would be easy to conditionalise). To me, this gives an obvious route for implementation within the socket class. Note that although I talk about sockets here, I suspect the same would/should apply to other forms. I have only been looking at this from a socket perspective as it's what I'm trying to do, and I have specifically been trying to solve the situation for sockets. I don't know whether this applies equally or not to other I/O types. Note that although the boost library is called ""asio"", the N4656 specification is more open, and is a more general networking library description, and doesn't use ""asynchronous"" in its name. Could consideration be given to this? At the moment for example, I don't believe that it's possible to use boost::asio to write something like a fully synchronous, thread-per-connection HTTP server that implemented a keepalive, since that would have to perform a blocking read for another request for the keepalive interval before terminating the connection. Now you may say, well you should be writing is asynchronously, but for some applications this much simpler model is more appropriate (low volumes of requests where each request is a POST that takes considerable time to process for example). And any general networking library ought to support being able to write such an application. " tom@… 13495 wrong comments in newline.hpp iostreams Boost 1.66.0 To Be Determined Bugs Jonathan Turkanis new 2018-03-28T01:00:11Z 2018-03-28T01:00:11Z "From newline.hpp: {{{ const int posix = 1; // Use CR as line separator. const int mac = 2; // Use LF as line separator. }}} Expected: vice versa (LF / CR). The code seems to be correct but these comments (cited in online docs as well) are misleading." axch@… 13494 polygon intersection fails geometry Boost 1.66.0 To Be Determined Bugs Barend Gehrels new 2018-03-27T13:21:11Z 2018-03-27T13:21:11Z "Hello, executing the following polygon intersection produces an empty result although the second operand is completely inside the first. Code snippet: using point_type = boost::geometry::model::d2::point_xy; using polygon = boost::geometry::model::polygon; using multi_polygon = boost::geometry::model::multi_polygon; polygon op1, op2; multi_polygon result; boost::geometry::read_wkt(""POLYGON((-1.99900000000000011 -0.889961757413527343,-1.99900000000000011 -1.12178395051169733,-1.89792526415373097 -1.49900000000000011,-1.8358086947169705 -1.49900000000000011,-1.99900000000000011 -0.889961757413527343))"", op1); boost::geometry::read_wkt(""POLYGON((-1.97591538973459313 -1.20793688888334905,-1.92415157993614439 -1.40112205701807624,-1.8661960316547388 -1.38559291465704759,-1.91795984145318754 -1.19240774652231996,-1.97591538973459313 -1.20793688888334905))"", op2); boost::geometry::intersection(op1, op2, result); I could track down the problem to the intersection/touch part. We use the intersection code quite heavily and such a constellation can occur frequently in our application. (I could present several more sample data for this bug). Therefore I set this to showstopper. Also I found other entries which look quite similar." lehnert@… 13493 boost::regex doesn't accept a regular expression anymore regex Boost 1.66.0 To Be Determined Bugs John Maddock new 2018-03-26T12:35:15Z 2018-03-26T12:35:15Z "I recently switched from Boost 1.61 to Boost 1.66 and discovered the following problem with boost::regex in 1.66: A regular expression is recognized as erroneous, i. e. after construction boost::regex::status() returns a value != 0, but the same expression was accepted in previous boost versions. Calling boost::regex_search() with such a erroneous boost::regex object leads to a crash. The expression is: {{{ ([0-9]*)\.([0-9]*)(\.([0-9]*)(\.([0-9]*))?)? }}} My C++ code looks as follows: {{{ static const boost::regex versionRegex( ""([0-9]*)\\.([0-9]*)(\\.([0-9]*)(\\.([0-9]*))?)?"" ); assert( versionRegex.status() == 0 && ""the regular expression must be valid"" ); }}} After switching the boost version to 1.66 the assertion above fails." sebastian.panek@… 13490 Compile error when BOOST_FIBERS_NO_ATOMICS is open context Boost 1.66.0 To Be Determined Bugs olli new 2018-03-23T12:30:45Z 2018-03-23T12:30:45Z "It's actually a bug about Boost::fiber but I can't find that component on bug page. include/boost/fiber/context.hpp: ln 392: ctx->use_count_.fetch_add( 1, std::memory_order_relaxed); While BOOST_FIBERS_NO_ATOMICS was defined, type of ctx->use_count_ is std::size_t, which is not a object and doesn't have fetch_add method, so this line failed to compile. There are also other compile errors, like remote_ready_hook_ is not defined but used at scheduler.hpp. full compile error is: {{{ 1>C:\HunterPackages\_Base\3e2037a\384d6ff\cd778ec\Install\include\boost/fiber/context.hpp(392): error C2228: left of '.fetch_add' must have class/struct/union 1> C:\HunterPackages\_Base\3e2037a\384d6ff\cd778ec\Install\include\boost/fiber/context.hpp(392): note: type is 'std::size_t' 1>C:\HunterPackages\_Base\3e2037a\384d6ff\cd778ec\Install\include\boost/fiber/context.hpp(397): error C2228: left of '.fetch_sub' must have class/struct/union 1> C:\HunterPackages\_Base\3e2037a\384d6ff\cd778ec\Install\include\boost/fiber/context.hpp(397): note: type is 'std::size_t' 1>C:\HunterPackages\_Base\3e2037a\384d6ff\cd778ec\Install\include\boost/fiber/scheduler.hpp(78): error C2039: 'remote_ready_hook_': is not a member of 'boost::fibers::context' 1> C:\HunterPackages\_Base\3e2037a\384d6ff\cd778ec\Install\include\boost/fiber/context.hpp(131): note: see declaration of 'boost::fibers::context' 1>C:\HunterPackages\_Base\3e2037a\384d6ff\cd778ec\Install\include\boost/fiber/scheduler.hpp(78): error C2065: 'remote_ready_hook_': undeclared identifier 1>C:\HunterPackages\_Base\3e2037a\384d6ff\cd778ec\Install\include\boost/fiber/scheduler.hpp(78): error C2975: 'PtrToMember': invalid template argument for 'boost::intrusive::member_hook', expected compile-time constant expression 1> C:\HunterPackages\_Base\3e2037a\384d6ff\cd778ec\Install\include\boost/intrusive/options.hpp(123): note: see declaration of 'PtrToMember' }}} " tdzl2003 13489 boykov_kolmogorov_max_flow produces incorrect residual edge capacity graph Boost 1.67.0 To Be Determined Bugs Jeremiah Willcock new 2018-03-22T16:26:50Z 2018-03-22T16:26:50Z "Greetings, With some graphs, the boykov_kolmogorov_max_flow algorithm creates residual edge capacity maps with larger values than the graph edge capacities should allow. I have attached code that creates a small graph to demonstrate this issue and the GraphViz plot of the automatically-generated .dot graph file for easy visual inspection of the results. In the attached GraphViz plot, each edge is labeled with (residual capacity)/(capacity). The residual capacity should never be greater than the capacity. Thus, the labels ""1/0"" and ""101/100"" are in error. I have run this test in Boost 1.54, 1.66, and 1.67." Nate Bird 13488 Detect ICU with pkg-config when possible in bootstrap.sh Building Boost Boost 1.66.0 To Be Determined Patches new 2018-03-22T12:24:20Z 2018-03-22T12:25:13Z "bootstrap.sh has some auto-detection code for ICU for the needs of Boost.Regex. It fails to detect ICU installed with the standard package manager on certain Linux distributions, e.g. Ubuntu 14.04. The issue does not exist on newer versions of Ubuntu. The solution is to use more robust detection of ICU with the help of pkg-config. The patch is provided on Github on the metaproject." anonymous 13487 Error detecting is_nothrow_move_constructible & is_nothrow_move_assignable move Boost Development Trunk To Be Determined Bugs Ion Gaztañaga new 2018-03-19T10:10:30Z 2018-03-19T11:40:38Z "The current type trait implementation of Boost.Move doesn't detect nothrow move construction or assignment. While `boost/move/detail/type_traits.hpp` defines many macros such as `BOOST_MOVE_HAS_NOTHROW_COPY`, it never defines `BOOST_MOVE_HAS_NOTHROW_MOVE` or `BOOST_MOVE_HAS_NOTHROW_MOVE_ASSIGN` for any compiler. As a result, `boost::move:detail::is_nothrow_move_constructible` and `is_nothrow_move_assignable` fallback to `boost::move_detail::is_pod::value` which is incorrect for any non-POD type. In my particular instance the result is that `boost::circular_buffer` chooses copy instead of move in `boost::move_if_noexcept()` for `std::weak_ptr` (which is nothrow move constructible and assignable), which in turn results in >10x worse performance of functions such as `boost::circular_buffer::erase()` in some conditions. It is possible to work around this by manually specializing `boost::has_nothrow_move`, but this is not a practical workaround. Another workaround would be to define the trait macros via compiler switches but this is clearly not the intended behavior as all other macros are defined in the header, and it might not be practical as some helper traits may need to be defined too (see `libstdc++` implementation below). I propose fixing this issue by defining `BOOST_MOVE_HAS_NOTHROW_MOVE` and `BOOST_MOVE_HAS_NOTHROW_MOVE_ASSIGN` for all compilers that support move semantics. `libstdc++` seems to have the most correct and portable way of doing this - without using compiler intrinsics: {{{ #!c++ template struct __is_nt_constructible_impl : public integral_constant()...))> { }; template struct __is_nt_constructible_impl<_Tp, _Arg> : public integral_constant(declval<_Arg>()))> { }; template::value> struct __is_nothrow_move_constructible_impl; template struct __is_nothrow_move_constructible_impl<_Tp, false> : public false_type { }; template struct __is_nothrow_move_constructible_impl<_Tp, true> : public is_nothrow_constructible<_Tp, _Tp&&> { }; template struct __is_nt_assignable_impl : public integral_constant() = declval<_Up>())> { }; template::value> struct __is_nt_move_assignable_impl; template struct __is_nt_move_assignable_impl<_Tp, false> : public false_type { }; template struct __is_nt_move_assignable_impl<_Tp, true> : public is_nothrow_assignable<_Tp&, _Tp&&> { }; }}} Visual Studio 14.0's implementation uses the intrinsics `__is_nothrow_constructible(T, Args...)` and `__is_nothrow_assignable(To, From)` that are passed an rvalue-reference as the second argument to detect move operations. Sadly, I can't seem to find any documentation on these intrinsics so it might be better to stick to pure C++ for all compilers (or maybe i'm just not looking in the right places). It might also be a good idea to replace the fallback to `boost::move_detail::is_pod` with more specific and inclusive `is_trivially_copy_constructible`, `is_trivially_copy_assignable` type traits." Andrey Glebov 13485 parent_path() edge case returns wrong result on Windows filesystem Boost 1.66.0 To Be Determined Bugs Beman Dawes new 2018-03-17T04:56:11Z 2018-05-10T16:36:17Z "The path ""C:\\"", while unusual, is legal in Windows and equivalent to ""C:\"". According to the path decomposition table, that means that {{{ parent_path(L""C:\\\\"") }}} should return ""C:"". However, it returns ""C:\"". The same is true for every variation with more than one trailing separator (preferred or generic). " Alex Weiss 13484 exists doesn't clear no_such_file_or_directory type of error codes filesystem Boost 1.66.0 To Be Determined Bugs Beman Dawes new 2018-03-17T01:47:44Z 2018-03-17T01:47:44Z "Windows 10, MSVC 19.13.26128. exists() fails when it successfully determines that a file doesn't exist (i.e. it sets the error code to ERROR_FILE_NOT_FOUND or throws in the throwing version). According to the reference and the tutorial example, that should not happen. Code example: {{{ boost::filesystem::path p(""c:\\filethatdoesntexist""); boost::system::error_code ec; bool doesExist = boost::filesystem::exists(p, ec); if (ec == boost::system::errc::no_such_file_or_directory) { std::cout << ""shouldn't happen!\n""; } }}} Note that for existing files, exists() works as expected. " Alex Weiss 13482 Referenced file in {.tar.gz,.tar.bz2}.json of official source distribution downloads is wrong None Boost 1.66.0 To Be Determined Bugs new 2018-03-15T13:45:57Z 2018-09-21T09:06:51Z "The official source distribution files (.tar.gz, .tar.bz2, .zip, .7z) provided at https://dl.bintray.com/boostorg/release/1.66.0/source/ are accompanied by .json files holding meta information as the actual source distribution file name and the SHA256 of the source distribution file. However, at least boost_1_66_0.tar.gz.json and boost_1_66_0.tar.bz2.json reference the data files for the RC2 of 1.66.0. This makes it impossible to use the JSON files as source for script-based downloads and verification of the Boost source distribution." t.klatt.oss+boost@… 13481 Strict aliasing is causing SIGSEGV on ARM Cortex-A15 when using GCC6 function Boost 1.66.0 To Be Determined Bugs Douglas Gregor new 2018-03-14T08:43:54Z 2018-04-04T07:41:16Z "Hello, I've been tracking a crach after upgrading GCC to 6.4 which was caused by corruption of the object stored inside `boost::function`. I think that the root cause for this is in the `function_buffer` storage. You see, there is a char member there with the intention of ""relax aliasing constraints"" as it states in the comment but if my understanding of the standard is correct, it doesn't really do that. Quote from the C++: {{{ If a program attempts to access the stored value of an object through a glvalue of other than one of the following types the behavior is undefined: 52 — the dynamic type of the object, — a cv-qualified version of the dynamic type of the object, — a type similar (as defined in 4.4) to the dynamic type of the object, — a type that is the signed or unsigned type corresponding to the dynamic type of the object, — a type that is the signed or unsigned type corresponding to a cv-qualified version of the dynamic type of the object, — an aggregate or union type that includes one of the aforementioned types among its elements or non- static data members (including, recursively, an element or non-static data member of a subaggregate or contained union), — a type that is a (possibly cv-qualified) base class type of the dynamic type of the object, — a char or unsigned char type. }}} There is indeed a `char` type along other things that may be aliased safely, but `function_buffer` is an `union` with `char` member so it falls into: {{{ an aggregate or union type that includes one of the **aforementioned** types }}} so the `function_buffer` itself can't be aliased. There was similar bug on GCC: 77686 (I'm unable to put links here) which was fixed by applying `may_alias` attribute on their `function_buffer` counterpart. Seems reasonable but after applying it to `function_buffer` it was still failing but after reading GCC docs I think I've found out why: {{{ may_alias Accesses through **pointers to types** with this attribute are not subject to type- based alias analysis, but are instead assumed to be able to alias any other type of objects. In the context of section 6.5 paragraph 7 of the C99 standard, an lvalue expression dereferencing such a pointer is treated like having a character type. }}} and there is `BOOST_FUNCTION_FUNCTION::move_assign` function which does: {{{ if (this->has_trivial_copy_and_destroy()) this->functor = f.functor; }}} and as it doesn't operate on the pointers, `may_alias` seems to be simply ignored. So two things seems to fixing it (I hope they fix it, since the bug if quite ""delicate"" and it's easy to hide it by changing the code that doesn't seem relevant): 1) use `gnu::may_alias` on `function_buffer` and assign it trough some helper like this instead of `union`s assign operator: {{{ template void alias_safe_assign(T & dst, T & src) { dst = src; } }}} there is Richard's comment on GCC bugtracker: 77686#c12 where he's noted about `std::swap` having a references so it seems to matter. 2) operate on `data` member directly since it has relaxed aliasing requirements by being a `char`. This doesn't even require GNU extensions.: {{{ std::memcpy(this->functor.data, f.functor.data, sizeof(boost::detail::function::function_buffer)); }}} Of course, putting a `may_alias` on the functor type itself (the one that I'm assigning to `boost::function` object) or putting this type into `function_buffer` also fixes this. ---- I'm compiling the attached testcase using {{{ arm-cortexa15-linux-gnueabihf-g++ (GCC) 6.4.1 20170811 }}} and `-O2 -fPIC` Br, Piotr." Piotr Podusowski 13477 Initializing boost::asio socket after constructor failed asio Boost 1.66.0 To Be Determined Bugs chris_kohlhoff new 2018-03-13T07:24:42Z 2018-05-15T03:17:49Z "I create a class to broadcast UDP messages as in the attached socket.cpp file. It works fine. Then, I wish to initialize the socket after the class constructor is initialized (to allow user input). So, I change from using socket to a socket pointer as in the socketPtr.cpp. It is a solution suggested by this post (https://stackoverflow.com/questions/31371214/initializing-boostasio-sockets-after-constructor). The replacements are as follows, where io_service is wrapped as boost::ref(io_service): //boost::asio::ip::udp::socket socket; boost::shared_ptr socketPtr; //boost::asio::ip::udp::socket socket(io_service, endpoint.protocol()); //socket.set_option(boost::asio::ip::udp::socket::reuse_address(true)); socketPtr = boost::make_shared(boost::ref(io_service), endpoint.protocol()); socketPtr->set_option(boost::asio::ip::udp::socket::reuse_address(true)); //socket.async_send_to(boost::asio::buffer(message), endpoint, [this](boost::system::error_code ec, std::size_t /*length*/) socketPtr->async_send_to(boost::asio::buffer(message), endpoint, [this](boost::system::error_code ec, std::size_t /*length*/) Just one thing with the modification: it doesn't work. I keep poring over the code, and could not find the reason why it shouldn't work. Could someone please help?" nguyen.tnhoang@… 13475 boost_1_66_0, Windows 10, mingw-w4, bootstrap fails - cannot write AppData\Local\Temp file build Boost 1.63.0 To Be Determined Bugs Vladimir Prus new 2018-03-12T17:31:19Z 2018-08-02T11:15:48Z "Have successfully built a couple versions of boost (most recently 1_65_1), but was unable to build 1_66_0 using mingw-w64. ""bootstrap gcc"" returns multiple fatal errors of the form: cc1.exe: fatal error: can't open 'C:\Users\Owner\AppData\Local\Temp\ccA01VU9.s' for writing: Permission denied compilation terminated. Noted file is actually created somewhere during this, so unclear where/why the failure happens. I attempted to re-build 1_65_1 (using a couple versions of mingw), with identical results. Any suggestions where to look?" mhkelley2017@… 13474 Weighted Graphs for Betweennness Centrality graph Boost 1.63.0 To Be Determined Bugs Jeremiah Willcock new 2018-03-11T20:59:50Z 2018-05-10T12:13:19Z "Graph edges' weights are not taken into account for the calculation of the Betweenness Centrality. I implementing a graph definition with weighted edges similar to the one below: http://boost.2283326.n4.nabble.com/Some-help-for-betweenness-centrality-for-undirected-weighted-graph-td4682926.html the betweenness centrality factors for the edges do not change when I change the edges' weights. Boost docs (http://www.boost.org/doc/libs/1_66_0/libs/graph/doc/betweenness_centrality.html) describe that Beetweenness Centrality algorithm can also operate on weighted graphs. Could you please help? I used Boost 1.66" abertzouanis@… 13473 asio::basic_repeating_timer broken by 1.66.0 asio Boost 1.66.0 Boost 1.66.0 Bugs chris_kohlhoff new 2018-03-10T16:21:55Z 2018-03-18T09:17:25Z "The third-party header basic_repeating_timer.hpp, ""Developed 2007 by David C. Wyles (http:///www.codegorilla.co.uk)"", no longer compiles with boost::asio 1.66.0: In file included from test1.cpp:1:0: ../Third_Party_Code/basic_repeating_timer.hpp:31:52: error: ‘deadline_timer_service’ in namespace ‘boost::asio’ does not name a template type typename TimerService = boost::asio::deadline_timer_service > ^ ../Third_Party_Code/basic_repeating_timer.hpp:31:74: error: expected ‘>’ before ‘<’ token typename TimerService = boost::asio::deadline_timer_service > ^ In file included from test1.cpp:1:0: ../Third_Party_Code/basic_repeating_timer.hpp:205:59: error: template argument 3 is invalid typedef basic_repeating_timer repeating_timer; " Mike Haben 13471 Documentation warnings in Xcode 9.2 process Boost 1.66.0 To Be Determined Bugs new 2018-03-08T15:03:08Z 2018-03-08T15:03:08Z "Xcode shows documentation warnings when I include screenshot : [https://imgur.com/Uq6BsMu] Belows are my xcode project settings. Hearder Search Paths /usr/local/include/ Library Search Paths /usr/local/lib/ Other Linker Flags = -lboost_system -lboost_filesystem " pointerphile@… 13469 Getting lot of warnings for simple code which is using boost::Intersection polygon Boost 1.61.0 To Be Determined Support Requests Lucanus Simonson new 2018-03-06T12:05:28Z 2018-03-06T12:05:28Z "The simple code below is generating a lot of warnings in boost 1_61_0 version. {{{ #include #include #include #include #include struct Vertex2D { double X; double Y; }; BOOST_GEOMETRY_REGISTER_POINT_2D(Vertex2D, double, cs::cartesian, X, Y); typedef std::vector Ring; BOOST_GEOMETRY_REGISTER_RING(Ring); typedef boost::geometry::model::polygon Polygon; int main() { Polygon p1; Polygon p2; std::vector intersections; boost::geometry::intersection(p1, p2, intersections); return 0; } }}} " sumanth.kaliki@… 13468 asio receive buffer overwritten before handler called asio Boost 1.66.0 To Be Determined Bugs chris_kohlhoff new 2018-03-06T10:47:26Z 2018-03-06T10:47:26Z "I am developing on linux CentOS6.8 Whilst using boost::asio::ip::udp::socket::async_receive_from, I have found that if packets arrive too quickly the receive buffer is overwritten before the handler is called, resulting in a loss of data. In order to resolve this in my implementation I have modified epoll_reactor::descriptor_state::perform_io to only process one entry from the EPOLLIN queue as below marked +++ {{{ operation* epoll_reactor::descriptor_state::perform_io(uint32_t events) { mutex_.lock(); perform_io_cleanup_on_block_exit io_cleanup(reactor_); mutex::scoped_lock descriptor_lock(mutex_, mutex::scoped_lock::adopt_lock); // Exception operations must be processed first to ensure that any // out-of-band data is read before normal data. static const int flag[max_ops] = { EPOLLIN, EPOLLOUT, EPOLLPRI }; for (int j = max_ops - 1; j >= 0; --j) { if (events & (flag[j] | EPOLLERR | EPOLLHUP)) { try_speculative_[j] = true; while (reactor_op* op = op_queue_[j].front()) { if (reactor_op::status status = op->perform()) { op_queue_[j].pop(); io_cleanup.ops_.push(op); if (status == reactor_op::done_and_exhausted) { try_speculative_[j] = false; break; } +++ if ((events & EPOLLIN) && (flag[j] == EPOLLIN)) +++ { +++ // only read one packet at a time +++ break; +++ } } else break; } } } }}} // The first operation will be returned for completion now. The others will // be posted for later by the io_cleanup object's destructor. io_cleanup.first_op_ = io_cleanup.ops_.front(); io_cleanup.ops_.pop(); return io_cleanup.first_op_; } " Gary Bayliss 13467 RTTI issue with non-polymorphic types in debug mode serialization Boost 1.67.0 To Be Determined Bugs Robert Ramey new 2018-03-05T18:09:14Z 2018-03-05T18:09:14Z "While serializing non-polymorphic types without RTTI in debug mode you get compiler warnings and execution crashes. In release mode everything works fine. This is because dynamic_cast is used for debugging purposes. The code is in smart_cast.hpp, starting in line 87: {{{ #if ! defined(NDEBUG) \ || defined(__MWERKS__) // do a checked dynamic cast return cross::cast(u); #else }}} I believe the first line could be replaced with: {{{ #if (! defined(NDEBUG) && ! defined(BOOST_NO_RTTI) ) \ }}} This solved the issue for me. " jlodos@… 13466 Security vulnerability in Boost Interprocess interprocess Boost Development Trunk To Be Determined Bugs Ion Gaztañaga new 2018-03-05T10:16:39Z 2018-07-01T21:04:16Z "Greetings, Our security team has flagged: if(!SetSecurityDescriptorDacl(&sd, true, 0, false)) in interprocess\detail\win32_api.hpp as a ""high-priority"" vulnerability citing: ""Objects that have null DACLs can have their security descriptors altered by malicious users so that no one has access to the object. Even if everyone needs access to an object, the object should be secured so that only administrators can alter its security"". We've been told to bring this to your attention; Can you please let us know when it would be feasible to fix?" Corelogic RiskModel 13464 Boost failed to compile test in graph lib due to the error C2499. graph Boost 1.63.0 To Be Determined Bugs Jeremiah Willcock new 2018-03-05T02:55:29Z 2018-03-06T03:01:47Z "We tried to build and run graph test for Boost. It failed to build due to the error C2499: 'boost::array_binary_tree_node::children_type::iterator': a class cannot be its own base class. Could you please help take a look at this? Thanks! **Reproduce steps:** 1. git clone -c core.autocrlf=true --recursive https://github.com/boostorg/boost.git D:\Boost\src 2. Open a VS 2015 x86 command prompt and browse to D:\Boost\src 3. .\bootstrap 4. .\b2 headers variant=release --build-dir=..\out\Release --address-model=32 5. .\b2 variant=release --build-dir=..\out\Release --address-model=32 6. .\b2 -j4 variant=release --build-dir=..\out\x86rel libs\graph\test **Expected result:** All tests passed **Actual result:** C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.12.25827\include\xlocale(315): warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc .\boost/graph/detail/array_binary_tree.hpp(46): **error C2499: 'boost::array_binary_tree_node::children_type::iterator': a class cannot be its own base class** .\boost/graph/detail/array_binary_tree.hpp(72): note: see reference to class template instantiation 'boost::array_binary_tree_node::children_type::iterator' being compiled .\boost/graph/detail/array_binary_tree.hpp(94): note: see reference to class template instantiation 'boost::array_binary_tree_node::children_type' being compiled .\boost/graph/detail/array_binary_tree.hpp(162): note: see reference to class template instantiation 'boost::array_binary_tree_node' being compiled .\boost/graph/detail/array_binary_tree.hpp(46): error C2143: syntax error: missing ',' before '<'" 1518134125@… 13463 Boost UDP multicast sender not using correct port asio Boost 1.66.0 To Be Determined Bugs chris_kohlhoff new 2018-03-04T01:12:13Z 2018-03-04T02:41:14Z "I follow this code to create a UDP multicast receiver: http://www.boost.org/doc/libs/1_66_0/doc/html/boost_asio/example/cpp11/multicast/sender.cpp I modify the code with these for predefined values: class receiver: short multicast_port = 13000; in main(): //if (argc != 2) and the code for argv that follows are commented out sender s(io_context, boost::asio::ip::make_address(""192.168.0.255"")); The first 3 octets match that of the local network. I check with Wireshark. It shows me that the packages are sent with source port of 53916, and destination port 0. Running the code again gives a source port of 59483, and destination port 0. What is causing the source port to be different from specified value? How can I force it to use the specified port number? Thanks." anonymous 13462 set_option: The requested address is not valid in its context asio Boost 1.66.0 Bugs chris_kohlhoff new 2018-03-03T22:08:17Z 2018-03-03T22:08:17Z "I follow this code to create a UDP multicast receiver: http://www.boost.org/doc/libs/1_66_0/doc/html/boost_asio/example/cpp11/multicast/receiver.cpp I modify the code with these for predefined values: class receiver: short multicast_port = 13; in main(): //if (argc != 3) and the code for argv that follows are commented out receiver r(io_context, boost::asio::ip::make_address(""127.0.0.1""), boost::asio::ip::make_address(""127.0.0.1"")); This error is thrown: set_option: The requested address is not valid in its context I have tried ""0.0.0.0"" and ""127.0.0.1"" and other values. Still get the same error. Could someone please help me figuring out what went wrong? " nguyen.tnhoang@… 13461 C++ Boost UDP multicast errors out with socket.set_option() asio Boost 1.66.0 To Be Determined Bugs chris_kohlhoff new 2018-03-03T04:30:29Z 2018-03-03T05:34:15Z "I am following an example of Boost UDP multicast sending and receiving here(https://stackoverflow.com/questions/12708558/c-multiple-multicast-receiver-with-boost-asio/12749727#12749727). I make some modifications to predefine IP and port: #include #include #include #include #include #include #include #include #include using boost::asio::ip::udp; using std::cout; using std::cin; using std::endl; void read(boost::asio::ip::udp::socket& socket) { boost::asio::ip::udp::endpoint sender; std::vector buffer; std::size_t bytes_readable = 0; for (int i = 0; i < 3; ++i) { // Poll until data is available. while (!bytes_readable) { // Issue command to socket to get number of bytes readable. boost::asio::socket_base::bytes_readable num_of_bytes_readable(true); socket.io_control(num_of_bytes_readable); // Get the value from the command. bytes_readable = num_of_bytes_readable.get(); // If there is no data available, then sleep. if (!bytes_readable) { boost::this_thread::sleep(boost::posix_time::seconds(1)); } } // Resize the buffer to store all available data. buffer.resize(bytes_readable); // Read available data. socket.receive_from( boost::asio::buffer(buffer, bytes_readable), sender); // Extract data from the buffer. std::string message(buffer.begin(), buffer.end()); // Output data. std::cout << ""Received message: ""; std::cout << message << std::endl; } } void write(boost::asio::ip::udp::socket& socket, boost::asio::ip::udp::endpoint& destination) { std::string message; for (unsigned int i = 0; i < 3; ++i) { std::ostringstream stream; stream << i; message = stream.str(); socket.send_to(boost::asio::buffer(message), destination); std::cout << ""Sent message: "" << message << std::endl; } } int main() { // ============================================================================================================ bool receiver = false; boost::asio::ip::address address = boost::asio::ip::address::from_string(""127.0.0.1""); unsigned short port = boost::lexical_cast(""13""); // Create socket. using boost::asio::ip::udp; boost::asio::io_service service; udp::socket socket(service); socket.open(boost::asio::ip::udp::v4()); // Allow other processes to reuse the address, permitting other processes on // the same machine to use the multicast address. socket.set_option(udp::socket::reuse_address(true)); // Guarantee the loopback is enabled so that multiple processes on the same // machine can receive data that originates from the same socket. socket.set_option(boost::asio::ip::multicast::enable_loopback(true)); socket.bind(udp::endpoint(boost::asio::ip::address_v4::any(), port)); udp::endpoint destination(address, port); // Join group. namespace ip = boost::asio::ip; socket.set_option(ip::multicast::join_group(address)); // Start read or write loops based on command line options. if (receiver) read(socket); else write(socket, destination); return 0; } An error is thrown here: socket.set_option(ip::multicast::join_group(address)); with this detail: Microsoft C++ exception: boost::exception_detail::clone_impl > at memory location 0x0040F470. occurred Can someone please tell me what went wrong? Thanks." nguyen.tnhoang@… 13460 broken shared build. program_options Boost 1.66.0 To Be Determined Bugs Vladimir Prus new 2018-03-01T10:07:53Z 2018-03-01T10:07:53Z "hi, i'm using a boost with a custom namespace (e.g. bcp --namespace='''foobar''' --namespace-alias ...). for such configuration the current version of program_options doesn't export symbols from shared library. afaics the current boost build system defines in such configuration -D'''FOOBAR'''_PROGRAM_OPTIONS_DYN_LINK=1 macro which doesn't match the boost/program_options/config.hpp:37 #ifdef: #if defined(BOOST_ALL_DYN_LINK) || defined('''BOOST'''_PROGRAM_OPTIONS_DYN_LINK) finally, the BOOST_PROGRAM_OPTIONS_DECL macro is empty. this is a regression from boost-1.64.0." pawels@… 13459 boost/regex/v4/perl_matcher_non_recursive.hpp infinite loop bug regex Boost 1.66.0 To Be Determined Bugs John Maddock new 2018-02-28T15:09:26Z 2018-02-28T15:09:26Z "== description == {{{ do { --position; --count; ++state_count; }while(count && !can_start(*position, rep->_map, mask_skip)); }}}[[br]] It performs a continuous loop at this point. [[br]] == Steps to Reproduce == {{{#0 boost::re_detail_106600::perl_matcher<__gnu_cxx::__normal_iterator, std::allocator > >, std::allocator, std::allocator > > > >, boost::regex_traits > >::unwind_greedy_single_repeat (this=0x7fffffffc600, r=0x0) at ./boost_1_66_0/boost/regex/v4/perl_matcher_non_recursive.hpp:1411 #1 0x00000000006a2ec3 in boost::re_detail_106600::perl_matcher<__gnu_cxx::__normal_iterator, std::allocator > >, std::allocator, std::allocator > > > >, boost::regex_traits > >::unwind (this=0x7fffffffc600, have_match=0x0) at ./boost_1_66_0/boost/regex/v4/perl_matcher_non_recursive.hpp:1266 #2 0x00000000006a92c3 in boost::re_detail_106600::perl_matcher<__gnu_cxx::__normal_iterator, std::allocator > >, std::allocator, std::allocator > > > >, boost::regex_traits > >::match_all_states (this=0x7fffffffc600) at ./boost_1_66_0/boost/regex/v4/perl_matcher_non_recursive.hpp:214 #3 0x00000000006a25d9 in boost::re_detail_106600::perl_matcher<__gnu_cxx::__normal_iterator, std::allocator > >, std::allocator, std::allocator > > > >, boost::regex_traits > >::match_prefix (this=0x7fffffffc600) at ./boost_1_66_0/boost/regex/v4/perl_matcher_common.hpp:336 #4 0x00000000005ed580 in boost::re_detail_106600::perl_matcher<__gnu_cxx::__normal_iterator, std::allocator > >, std::allocator, std::allocator > > > >, boost::regex_traits > >::match_imp (this=0x7fffffffc600) at ./boost_1_66_0/boost/regex/v4/perl_matcher_common.hpp:220 #5 0x00000000005ecb5f in boost::re_detail_106600::perl_matcher<__gnu_cxx::__normal_iterator, std::allocator > >, std::allocator, std::allocator > > > >, boost::regex_traits > >::match (this=0x7fffffffc600) at ./boost_1_66_0/boost/regex/v4/perl_matcher_common.hpp:193 #6 0x00000000004f353f in boost::regex_match<__gnu_cxx::__normal_iterator, std::allocator > >, std::allocator, std::allocator > > > >, char, boost::regex_traits > > (first=0x0, last=0x0, m=..., e=..., flags=boost::regex_constants::match_partial) at ./boost_1_66_0/boost/regex/v4/regex_match.hpp:50 Python Exception There is no member named _M_dataplus.: #7 0x00000000004f20f4 in boost::regex_match, std::allocator, std::allocator, std::allocator > > > >, char, boost::regex_traits > > (s=, m=..., e=..., flags=boost::regex_constants::match_partial) at ./boost_1_66_0/boost/regex/v4/regex_match.hpp:82 }}} " komad 13456 Object tracking fails with pointer to variant's content serialization Boost Development Trunk To Be Determined Bugs Robert Ramey new 2018-02-24T14:06:05Z 2018-02-25T02:22:03Z "Object tracking fails with a pointer to an object contained into a variant that is an element of a container which loads the value_type into a local object. For example a map with a variant as a mapped_type. There is a pull request: https://github.com/boostorg/serialization/pull/96 Demo: {{{ struct Foo { int i; template void serialize(Archive& ar, const unsigned int version) { ar & i; } }; int main() { using map_t = std::unordered_map>; std::string testfile{""/tmp/serialized""}; { map_t map{{""key"", Foo{5}}}; auto ptr = &boost::strict_get(map.begin()->second); std::ofstream os(testfile); boost::archive::text_oarchive oa(os); oa << map; oa << ptr; } { std::ifstream is(testfile, (std::ios_base::openmode)0); boost::archive::text_iarchive ia(is, 0); map_t map; Foo* ptr; ia >> map; ia >> ptr; assert(ptr->i == 5); } } }}} " Ricardo Calheiros de Miranda Cosme 13454 universal 32/64 bits build broken on macOS (worked until 1.65.1) Building Boost Boost 1.66.0 To Be Determined Bugs new 2018-02-20T13:53:59Z 2018-02-22T20:35:57Z "Since boost 1.66.0, when configured with `architecture=x86 address-model=32_64`, the build system forgets to add `-arch i386 -arch x86_54` to the compilation flags (although they are still present in the link flags). The resulting libraries thus contain only the build arch. Boost 1.65.1 correctly builds universal libraries. to reproduce: {{{ ./bootstrap.sh --without-libraries=mpi --without-libraries=context --without-libraries=coroutine ./b2 -d2 --debug-configuration architecture=x86 address-model=32_64 }}} see also: https://trac.macports.org/ticket/55857" Frédéric Devernay 13453 add serialize/ deserialize functionality accumulator Boost 1.67.0 To Be Determined Feature Requests Eric Niebler new 2018-02-20T08:38:43Z 2018-02-20T08:38:43Z "also added here: https://github.com/boostorg/accumulators/issues/13 (not sure if github issues are reviewed) This was also discussed here: https://stackoverflow.com/questions/32289719/how-to-serialize-boostaccumulatorsaccumulator-set The ability to store the internal state of an object, as well as to initialize it with state is would be very useful, as this would eliminate the need to store the actual data point. Currently the different classes cannot be extended by inheritance, since their internal state is private. Anyway, since serialization and deserialization does not have any size/speed impact on the class, it is probably better to add this to the class and not to inherited version of it. Probably good to use the boost serialization library, to assure that the output is portable (serialize on one machine and deserialize on another)." Yuval Lifshitz 13452 Use of std deprecated code in C++17 in MSCV 2017 asio Boost 1.66.0 To Be Determined Bugs chris_kohlhoff new 2018-02-20T06:42:09Z 2018-02-20T06:42:09Z In Microsoft Visual C++ 2017 you have the possibility to compile with C++17 enabled. (Have to enable this to be able to use std::optional). This give a lot of warnings for deprecated stuff. The std::allocator is deprecated (http://en.cppreference.com/w/cpp/memory/allocator) and the std::result_of has changed to std::invoke_result (http://en.cppreference.com/w/cpp/types/result_of). I compile with treat warning as errors, so this make is difficult to use the asio library. r.undheim@… 13450 boost_beast tests are failing on Windows with Intel's compiler due to incorrect boost_asio config.hpp file asio Boost 1.66.0 To Be Determined Bugs chris_kohlhoff new 2018-02-16T09:25:57Z 2018-02-16T09:25:57Z "{{{ $ cd boost_1_66_0/libs/beast/test/beast $ C:/Users/ikelarev/test5/boost_1_66_0/b2 toolset=intel-18_0-vc14.1 address-model=64 --hash --disable-icu --reconfigure -d+1 -d+2 cflags="" "" core ... icl @""..\..\..\..\bin.v2\libs\beast\test\beast\core.test\907320e2b6757701b88c115bc51c431a\core.obj.rsp"" ... ../../../../boost/beast/core/detail/bind_handler.hpp(109): error: namespace ""boost::asio"" has no member ""associated_allocator_t"" boost::asio::associated_allocator_t; ^ ../../../../boost/beast/core/detail/bind_handler.hpp(109): error: expected a "";"" boost::asio::associated_allocator_t; ^ ../../../../boost/beast/core/impl/buffered_read_stream.ipp(53): error: namespace ""boost::asio"" has no member ""associated_allocator_t"" boost::asio::associated_allocator_t; ^ ../../../../boost/beast/core/impl/buffered_read_stream.ipp(53): error: expected a "";"" boost::asio::associated_allocator_t; ^ ../../../../boost/beast/core/impl/buffered_read_stream.ipp(62): error: namespace ""boost::asio"" has no member ""associated_executor_t"" boost::asio::associated_executor_t > using associated_allocator_t = typename associated_allocator::type; #endif // defined(BOOST_ASIO_HAS_ALIAS_TEMPLATES) }}} This means that associated_allocator_t will not be defined if BOOST_ASIO_HAS_ALIAS_TEMPLATES macro is not defined. This macro definition is arranged in boost/asio/detail/config.hpp header file: {{{ // Support alias templates on compilers known to allow it. #if !defined(BOOST_ASIO_HAS_ALIAS_TEMPLATES) # if !defined(BOOST_ASIO_DISABLE_ALIAS_TEMPLATES) ... # if defined(BOOST_ASIO_MSVC) # if (_MSC_VER >= 1900) # define BOOST_ASIO_HAS_ALIAS_TEMPLATES 1 # endif // (_MSC_VER >= 1900) # endif // defined(BOOST_ASIO_MSVC) # endif // !defined(BOOST_ASIO_DISABLE_ALIAS_TEMPLATES) #endif // !defined(BOOST_ASIO_HAS_ALIAS_TEMPLATES) }}} This means that BOOST_ASIO_MSVC macro is required for BOOST_ASIO_HAS_ALIAS_TEMPLATES definition. BOOST_ASIO_MSVC definition is arranged in the same file before. {{{ // Microsoft Visual C++ detection. #if !defined(BOOST_ASIO_MSVC) # if defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_MSVC) # define BOOST_ASIO_MSVC BOOST_MSVC # elif defined(_MSC_VER) && (defined(__INTELLISENSE__) \ || (!defined(__MWERKS__) && !defined(__EDG_VERSION__))) # define BOOST_ASIO_MSVC _MSC_VER # endif // defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_MSVC) #endif // defined(BOOST_ASIO_MSVC) }}} It's obvious from the code that BOOST_ASIO_HAS_BOOST_CONFIG and BOOST_MSVC macros are required for BOOST_ASIO_MSVC macro definition. BOOST_ASIO_HAS_BOOST_CONFIG macro is actually defined but BOOST_MSVC macro is defined only for Microsoft cl compiler. For Intel's icl compiler BOOST_MSVC macro is not defined and BOOST_INTEL macro is defined instead. As a result BOOST_ASIO_MSVC and BOOST_ASIO_HAS_ALIAS_TEMPLATES macros will not be defined. And finally 'namespace ""boost::asio"" has no member ""associated_allocator_t""' error appears. One of possible solutions is to add this code into boost/asio/detail/config.hpp file: {{{ #if !defined(BOOST_ASIO_MSVC) # if defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_MSVC) # define BOOST_ASIO_MSVC BOOST_MSVC +# elif defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_INTEL) +# define BOOST_ASIO_MSVC BOOST_INTEL # elif defined(_MSC_VER) && (defined(__INTELLISENSE__) \ || (!defined(__MWERKS__) && !defined(__EDG_VERSION__))) # define BOOST_ASIO_MSVC _MSC_VER }}} " Ivan Kelarev 13449 "Execution of boost_mpl_preprocess.py fails if $(boost_root) path contains the string ""linux""" mpl Boost 1.63.0 To Be Determined Bugs Aleksey Gurtovoy new 2018-02-15T08:59:29Z 2018-02-15T09:27:31Z "**How to reproduce:** Build System: Ubuntu 16.04.0 LTS GCC: all Let's say that we have the boost sources in `/tmp/boost-linux/boost_1_X_X` The important thing is to have the string `linux` in the `boost-root` variable. **Error log:** {{{ python boost_mpl_preprocess.py In file included from /tmp/boost-linux/boost_1_63_0/libs/mpl/preprocessed/vector/vector40.cpp:15:0: /tmp/boost-linux/boost_1_63_0/boost/config.hpp:30:29: fatal error: /tmp/boost-1/boost_1_63_0/libs/mpl/preprocessed/include/plain/user.hpp: No such file or directory compilation terminated. In file included from /tmp/boost-linux/boost_1_63_0/libs/mpl/preprocessed/vector/vector70.cpp:15:0: /tmp/boost-linux/boost_1_63_0/boost/config.hpp:30:29: fatal error: /tmp/boost-1/boost_1_63_0/libs/mpl/preprocessed/include/plain/user.hpp: No such file or directory compilation terminated. In file included from /tmp/boost-linux/boost_1_63_0/libs/mpl/preprocessed/vector/vector30.cpp:15:0: /tmp/boost-linux/boost_1_63_0/boost/config.hpp:30:29: fatal error: /tmp/boost-1/boost_1_63_0/libs/mpl/preprocessed/include/plain/user.hpp: No such file or directory compilation terminated. }}} **Problem:** This appears because in `preprocess.cmd` gcc is invoked with include files included with angle brackets, so if we have the string `linux` it will be evaluated to `1` because it is a macro " Mihai Pop 13448 Json Property tree throwing error when a node has interger value greater than INT_MAX of int32 property_tree Boost 1.63.0 To Be Determined Bugs Sebastian Redl new 2018-02-15T07:56:40Z 2018-05-10T12:08:18Z "When I have Json with a node having value greater than INT_MAX of int32 { ""a"" :3140000000 } When I access any node in that json, it throws error saying ""No such Node"" " tejaveda.2008@… 13447 BOOST_PP_VARIADICS should be 1 for NVCC preprocessor Boost Development Trunk To Be Determined Feature Requests No-Maintainer new 2018-02-14T17:13:14Z 2018-06-26T22:20:50Z "Hi, I just run into the problem that my boost preprocessor using code was not running because {{{BOOST_PP_VARIADIC}}} in /boost/preprocessor/config/config.hpp is set to 0 for {{{__CUDACC__}}} in [https://github.com/boostorg/preprocessor/blob/develop/include/boost/preprocessor/config/config.hpp#L74 line 74]. However for my application variadic macros as working great with the nvidia compiler. What is needed to accept the nvidia compiler as {{{tested compiler}}} as stated in line 73 of the same file?" Alexander Matthes 13446 \R does not match \v and \n when combined with flag no_escape_in_lists regex Boost 1.66.0 To Be Determined Bugs John Maddock new 2018-02-14T10:50:10Z 2018-02-14T10:50:10Z "The following code {{{ #include #include int main(int argc, char** argv) { auto backslashR = boost::regex(""\\R"", boost::regex_constants::no_escape_in_lists); std::cout << std::boolalpha; std::cout << ""regex='\\R', text='\\r', match found: "" << boost::regex_search(""\r"", backslashR) << std::endl; std::cout << ""regex='\\R', text='\\n', match found: "" << boost::regex_search(""\n"", backslashR) << std::endl; std::cout << ""regex='\\R', text='\\v', match found: "" << boost::regex_search(""\v"", backslashR) << std::endl; return 0; } }}} outputs {{{ regex='\R', text='\r', match found: true regex='\R', text='\n', match found: true regex='\R', text='\v', match found: true }}} using boost regex v1.55 and v1.64. Using version 1.66 I get this: {{{ regex='\R', text='\r', match found: true regex='\R', text='\n', match found: false regex='\R', text='\v', match found: false }}} Compiler: Visual Studio 2017, toolset=v141, VC15.5.1 " youcef.l@… 13445 Manual entry for abs function of vector space algebra differs from implementation odeint Boost 1.66.0 To Be Determined Bugs karsten new 2018-02-13T11:39:46Z 2018-02-13T11:39:46Z "The manual entry for a vector space algebra definition in boost odeint states that the return value of the abs function necessary for controlled steppers must be of state type. http://www.boost.org/doc/libs/1_66_0/libs/numeric/odeint/doc/html/boost_numeric_odeint/odeint_in_detail/state_types__algebras_and_operations.html#boost_numeric_odeint.odeint_in_detail.state_types__algebras_and_operations.algebras_and_operations.vector_space_algebra This works only for fundamental types as described in the following stackoverflow entry. https://stackoverflow.com/questions/44566641/boost-odeint-controlled-stepper-with-custom-class-and-vector-space-algebra For custom types it only compiles when the return value of the abs function is of value type. This would also correspond to the mathematical understanding of the absolute value defined in a vector space." jan@… 13444 boost::geometry::buffer returns only partial result (regression over 1.63.0) geometry Boost 1.66.0 To Be Determined Bugs Barend Gehrels assigned 2018-02-09T10:44:56Z 2018-02-17T17:53:03Z "using boost::geometry::buffer with multilinestring, only 1 of expected 3 polygons are returned. The fix ist to buffer each linestring separately and union_ them into one multipolygon. This also turned out to be much faster. I do not have a simple example, but a rather complex one, which I will attach. Version 1.63.0 returned all 3 polygons, but was also rather slow when compared with the workaround." andre.meyer@… 13442 pmr::synchronized_pool_resource is affected by thread priority inversion container Boost 1.63.0 To Be Determined Bugs Ion Gaztañaga new 2018-02-07T09:41:11Z 2018-02-09T17:17:32Z "In our setup, we have several high priority threads that occasionally need to allocate memory using `synchronized_pool_resource::allocate`. Such memory is later released by a lower priority thread using `synchronized_pool_resource::deallocate`. It might sometimes happen that several `allocate` calls happen simultaneously with `deallocate`. Because of the spinlock implementation used by dlmalloc, the high priority threads are in a busy loop trying to acquire the lock, but the kernel might have no resources left to awake the ""cleaner"" thread that is currently holding the lock. Attached is a minimum example that Linux `SCHED_FIFO` scheduler. Running the program, on my system I can see: 1) The program prints 'failed' several times, meaning that some calls to `allocate` blocked for more than a second. 2) The total execution time is approximately 120 times slower than a version that does not use any thread priority. Inspecting the program with `perf` one can see that most of the time is spent inside `boost_cont_sync_lock`, in particular in `sched_yield`. A possible solution could be to switch to a pure pthread implementation by defining `USE_SPIN_LOCKS=0` before including `dlmalloc_2_8_6.c` System: `Linux SPC-LT48 4.9.0-4-amd64 #1 SMP Debian 4.9.65-3 (2017-12-03) x86_64 GNU/Linux` " enniobarbaro@… 13441 Boos.Locale message formating exception if 'ß' used in translation file locale Boost 1.66.0 To Be Determined Bugs Artyom Beilis new 2018-02-07T07:49:19Z 2018-02-07T07:49:19Z "If I use a 'ß' in the translation and load this resource file i get an debug error. {{{ boost::locale::generator gen; gen.add_messages_domain(""MyDomain""); const auto de = gen(""de_DE""); // debug error }}} " mattias.eppler@… 13440 Paths to boost libraries contain colons on OS X 10.13 (xcode 9) with Intel's compiler Building Boost Boost 1.66.0 Boost 1.66.0 Bugs new 2018-02-06T14:43:35Z 2018-02-15T13:51:56Z "After some changes in build system in boost 1.66 many tests started to fail on Mac OS with Intel's compiler due to colon in paths to boost libraries. With Clang compiler or on Linux this problem does not appear. OS X example: {{{ $ pwd /export/users/ikelarev/test3/boost_1_66_0/libs/array/test $ ../../../b2 toolset=intel-darwin array0 ... testing.capture-output ../../../bin.v2/libs/array/test/array0.test/intel-darwin/debug/threadapi-pthread/toolset-intel-darwin:linker-type-darwin/array0.run /bin/sh: line 9: 26781 Abort trap: 6 ""../../../bin.v2/libs/array/test/array0.test/intel-darwin/debug/threadapi-pthread/toolset-intel-darwin:linker-type-darwin/array0"" > ""../../../bin.v2/libs/array/test/array0.test/intel-darwin/debug/threadapi-pthread/toolset-intel-darwin:linker-type-darwin/array0.output"" 2>&1 < /dev/null ====== BEGIN OUTPUT ====== dyld: Library not loaded: libboost_unit_test_framework.dylib Referenced from: /export/users1/ikelarev/test3/boost_1_66_0/libs/array/test/../../../bin.v2/libs/array/test/array0.test/intel-darwin/debug/threadapi-pthread/toolset-intel-darwin:linker-type-darwin/array0 Reason: image not found EXIT STATUS: 134 ====== END OUTPUT ====== DYLD_LIBRARY_PATH=""/export/users1/ikelarev/test3/boost_1_66_0/bin.v2/libs/chrono/build/intel-darwin/debug/threadapi-pthread/toolset-intel-darwin:linker-type-darwin:/export/users1/ikelarev/test3/boost_1_66_0/bin.v2/libs/system/build/intel-darwin/debug/threadapi-pthread/toolset-intel-darwin:linker-type-darwin:/export/users1/ikelarev/test3/boost_1_66_0/bin.v2/libs/test/build/intel-darwin/debug/threadapi-pthread/toolset-intel-darwin:linker-type-darwin:/export/users1/ikelarev/test3/boost_1_66_0/bin.v2/libs/timer/build/intel-darwin/debug/threadapi-pthread/toolset-intel-darwin:linker-type-darwin:/nfs/igk/proj/icl/archive/deploy_mainline/efi2mac/20180206_000000/build/mac_prod/mac/bin/lib:/nfs/igk/proj/icl/archive/deploy_mainline/efi2mac/20180206_000000/build/mac_prod/mac/lib/intel64:$DYLD_LIBRARY_PATH"" export DYLD_LIBRARY_PATH ... }}} DYLD_LIBRARY_PATH contains paths like {{{/export/users1/ikelarev/test3/boost_1_66_0/bin.v2/libs/chrono/build/intel-darwin/debug/threadapi-pthread/toolset-intel-darwin:linker-type-darwin}}} but colon is the path separator and this path will be broken into two parts - {{{/export/users1/ikelarev/test3/boost_1_66_0/bin.v2/libs/chrono/build/intel-darwin/debug/threadapi-pthread/toolset-intel-darwin}}} and {{{linker-type-darwin}}}. As a result any library which is placed there will be not found. With Clang compiler paths look like {{{../../../bin.v2/libs/chrono/build/darwin-darwin-4.2.1/debug/threadapi-pthread}}} without ""toolset-intel-darwin:linker-type-darwin"" part or something similar." Ivan Kelarev 13439 boost:::filesystem:::copy_file : The File Exist filesystem Boost 1.63.0 To Be Determined Bugs Beman Dawes new 2018-02-06T14:31:28Z 2018-02-07T06:18:33Z "I'm using an insurance using BOOST library to copy files into the NAS We migrated to SSD NAS with high throughput, since we have this issue the system return an error boost:::filesystem:::copy_file : The File Exist If I comeback to SATA NAS it works " anonymous 13437 array.hpp and boost_array.hpp share the same header guard serialization Boost 1.66.0 To Be Determined Bugs Robert Ramey new 2018-02-06T00:46:27Z 2018-02-06T01:03:22Z "Both array.hpp and boost_array.hpp use BOOST_SERIALIZATION_ARRAY_HPP as header guard. " christof.krueger@… 13433 b2 emits strange error message when building 1.66.0 on windows 10 against very new visual studio build Boost 1.66.0 To Be Determined Bugs Vladimir Prus new 2018-01-31T22:08:49Z 2018-02-02T18:30:56Z "Hello, I am try to build boost against the latest version of visual studio (15.5.5, I know that 15.5.6 is out though, shouldn't be too different) and I am getting this error failed to write command file! when running this command b2.exe --hash address-model=32 debug --stagedir=bin\v141\Win32\ -a --toolset=msvc-14.1 cxxflags=""/D""_WIN32_WINNT=0x0600"" /std:c++17 /Qspectre /D""_HAS_AUTO_PTR_ETC=1"""" It has passed sometimes however it frequently doesn't. Its unclear what exactly I am doing that causes this error Here are the things I've done step by step 1: Download boost source code and unzip it 2: run bootstrap.bat 3: run above cmd line from the visual studio developer command prompt (this has failed when using powershell too) this was the last few things that were printed Info: Boost.Config is older than your compiler version - probably nothing bad will happen - but you may wish to look for an update Boost version. Define BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE to suppress this message. msvc.archive bin.v2\libs\date_time\build\a1668ad3e8cba9b190515cabd106a4cf\libboost_date_time-vc141-mt-gd-x32-1_66.lib common.copy bin\v141\Win32\lib\libboost_date_time-vc141-mt-gd-x32-1_66.lib bin.v2\libs\date_time\build\a1668ad3e8cba9b190515cabd106a4cf\libboost_date_time-vc141-mt-gd-x32-1_66.lib 1 file(s) copied. compile-c-c++ bin.v2\libs\exception\build\a1668ad3e8cba9b190515cabd106a4cf\clone_current_exception_non_intrusive.obj clone_current_exception_non_intrusive.cpp Info: Boost.Config is older than your compiler version - probably nothing bad will happen - but you may wish to look for an update Boost version. Define BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE to suppress this message. failed to write command file! I am unsure what is causing this. I don't think I am passing in parameters to the cxx flags incorrectly. I am filing a ticket because I suspect there might be a bug in b2 or bjam." ivandavid14@… 13432 Remove RCS Tags from MPL component mpl Boost 1.63.0 To Be Determined Tasks Aleksey Gurtovoy new 2018-01-31T21:03:56Z 2018-01-31T21:03:56Z The comment blocks at the top of several of the sources in the MPL component contain antiquated RCS tags that should likely be removed as they cause merge issues on some version control systems. Grayson Lang 13431 ncurses.h and boost.asio problem asio Boost 1.66.0 To Be Determined Bugs chris_kohlhoff new 2018-01-31T17:05:53Z 2018-05-22T04:13:35Z "Hi, I got the latest boost library (1.66) and tried to compile my old project. The file that I have the errors has #include I get a bunch of errors related to timeout() call. To reproduce: #include #include /boost_release_1_66/include/boost/asio/basic_socket_streambuf.hpp:586:7: error: ‘stdscr’ is not a type int timeout() const Looking to the history I see that it was a similar issue but was fixed, and now in the latest release this issue is back. " Adrian Rapiteanu 13430 boost::optional C++98 and C++11 compatability breaks in boost 1.66.0 optional Boost 1.66.0 To Be Determined Bugs Fernando Cacciola new 2018-01-30T16:20:38Z 2018-01-30T16:20:38Z "Hi, I have an application that links both C++98 and C++11 libraries, this has worked fine up to and including boost 1.65.1 The issue is caused by a shared header from the C++98 library that uses boost::optional, when compiled by the C++11 code it gets a different class layout of boost::optional to the C++98 code and this is causing binary incompatibilities and seg faults. Observed on both a Mac with clang 9.0.0 and RHEL with gcc 4.8.5. Windows does not have this issue. A simple example is a C++98 class Test98 as follows (test98.hpp) {{{ #include class Test98 { public: Test98 (boost::optional o = boost::none); private: boost::optional o_; }; }}} with implementation (test98.cpp) {{{ #include ""test98.hpp"" Test98::Test98 (boost::optional o) : o_(o) {} }}} Then a main program (main11.cpp) {{{ #include #include int main () { boost::shared_ptr t98 = boost::make_shared(); std::cout << ""OK"" << std::endl; return 0; } }}} When I compile test98.cpp as C++98 and main11.cpp as C++11, e.g. with a Makefile {{{ boost=/Users/niall/dev/boost_1_66_0 all: main11 clean: rm *.o main11 test98.o: test98.cpp g++ -c -Wall -g -O0 -I${boost} $< -o $@ main11.o: main11.cpp g++ -c -std=c++11 -g -O0 -Wall -I${boost} $< -o $@ main11: main11.o test98.o g++ $^ -o $@ }}} it causes a seg fault, in a debugger I can see the problem is the boost::optional constructor at optional.hpp:946 {{{ 945 #else -> 946 optional ( optional const& rhs ) : base( static_cast(rhs) ) {} 947 #endif }}} One might argue that it is wrong to attempt to mix 98 and 11 like this, the two preprocessor runs above are generating different versions of test98.hpp, but it works previously so is a regression issue for me. Regards, Niall." nialljosullivan@… 13429 Typo in Boost.Regex error message regex Boost 1.66.0 To Be Determined Patches John Maddock new 2018-01-30T14:21:13Z 2018-02-11T20:11:09Z "The attached patch fixes the typo ""uninitialzed""." Peter Klotz 13428 "Windows: ""is_symlink"" for drive letter (without trailing directory separator) returns the wrong result" filesystem Boost 1.66.0 To Be Determined Bugs Beman Dawes new 2018-01-30T13:39:23Z 2018-01-30T13:39:23Z "Suppose you have a normal directory {{{Dir}}} and a symlink named {{{SymlinkToDir}}} which points to {{{Dir}}} on drive {{{C:\}}}. The following two tests lead to different results: {{{ boost::filesystem::path fsPathToSymlink(""C:\\SymlinkToDir""); boost::filesystem::path fsPathToDrive(""C:""); current_path(fsPathToDrive + ""\\""); bool b1 = is_symlink(fsPathToDrive); assert( b1 == false ); current_path(fsPathToSymlink); bool b2 = is_symlink(fsPathToDrive); assert( b2 == true ); }}} It seems that Windows differentiates between {{{C:}}} and {{{C:\}}}. The first form seems to denote the current directory on drive {{{C:\}}} while the second form seems to denote drive {{{C:\}}} itself. This also can be observed in the Windows command promt. {{{is_symlink}}} internally uses {{{GetFileAttributesW}}} to determine the symlink status. {{{GetFileAttributes(""C:"")}}} returns the file attributes of {{{C:\\SymlinkToDir}}} instead of {{{C:\}}}. The function {{{is_symlink}}} is used to implement other functions, so this problem also effects at least the following other functions, possibly even many more: * {{{canonical}}} returns {{{BOOST_ERROR_NOT_SUPPORTED}}} for an absolute path, if compiled for Windows versions earlier than Windows Vista ({{{_WIN32_WINNT < 0x0600}}}) and the current directory represents a symlink. * {{{weakly_canonical}}} in the same scenario as above, because this utilizes {{{canonical}}}." m.kosch@… 13427 Boost::binomial_heap - decrease bug heap Boost 1.63.0 To Be Determined Bugs timblechmann new 2018-01-30T12:45:35Z 2018-01-30T12:45:35Z "Hello. I was messing around with boost::binomial_heap today and I think I may have found a bug. Essentially, when I construct a min-heap with binomial_heap, insert elements, and decrease an element to become the smallest, it's not at the top. I've attached a small enough reproducer. Here's the result on execution: http://coliru.stacked-crooked.com/a/28fe3afdedda9d76 As you may see, the output should be: -1 1 1 2 3 4 Indeed, this is the output in the case of boost::fibonacci_heap and boost::pairing_heap. However, in the case of boost::binomial_heap, the output is: 1 -1 1 2 3 4" adtac 13426 path::concat should ideally take a value_type filesystem Boost 1.63.0 To Be Determined Feature Requests Beman Dawes new 2018-01-30T00:36:48Z 2018-01-30T00:36:48Z "Hello, It'd be great if the concat function on filesystem::path would take a value_type so that it is in line with the filesystem spec. This would also allow .concat(fs::path::preferred_separator) as an easy way to append the separator to the path." ethan@… 13425 bug in boost polygon resize polygon Boost 1.66.0 To Be Determined Bugs Lucanus Simonson new 2018-01-29T04:15:12Z 2018-01-30T01:07:50Z "The function: void handleResizingEdge45() in polygon_45_set_data.hpp:943 When resizing a vertical/horizontal edge, the code construct a rectangle_data directly instead of using Unit template. When the coordinate_traits is specialized, this easily causes the integer overflow and lead to bogus result. Change int to Unit would be the simple fix. Thanks, " leoyin@… 13424 incorect path separator in filesystem::weakly_canonical filesystem Boost 1.66.0 To Be Determined Bugs Beman Dawes new 2018-01-28T22:34:18Z 2018-01-28T22:34:18Z "On windows for this code: path t = "".""; cout << weakly_canonical(t) << endl; I got: C:/test\boost_test " ajcekg@… 13421 boost::polygon::euclidean_distance(segment, point) returns 0 if the segment is of length 0 polygon Boost 1.65.0 To Be Determined Bugs Lucanus Simonson new 2018-01-25T05:31:36Z 2018-01-25T05:31:36Z "On line 658 of segment_concept.hpp it returns 0 if the length of the segment (squared) is 0. It should just return the distance to one of the endpoints instead. In such a case param is also 0 which is why we end up there." daniel@… 13419 Dinkum STL requires std::sprintf() with asio Boost 1.66.0 To Be Determined Bugs chris_kohlhoff new 2018-01-24T19:41:25Z 2018-01-24T19:41:25Z "sprintf() used in global scope in recent update. Corrected in https://github.com/boostorg/asio/pull/54 " Brian Kuhl 13417 ASIO should support VxWorks asio Boost 1.66.0 To Be Determined Patches chris_kohlhoff new 2018-01-23T18:37:49Z 2018-01-23T18:41:30Z "ASIO is popular library with embedded engineers using VxWorks. However they must modify the code themselves to compile on the embedded target system. And then design a test harness to verify the functionality. To stop the repeated porting of ASIO to VxWorks I've prepared the following pull request : https://github.com/boostorg/asio/pull/54" Brian Kuhl 13416 ASIO does not cross compile because it uses obsolete vs. asio Boost 1.66.0 To Be Determined Bugs chris_kohlhoff new 2018-01-23T18:30:22Z 2018-01-23T18:40:37Z "ASIO jam based build suffers from ""host pollution"" and compile options intended for the target operating system are designated with **** rather than **** which is the current syntax. This prevents ASIO being cross-compiled using b2 in many cases as the libraries and compile options not supported by the target OS are added to the build options. This is corrected as part of the following pull request https://github.com/boostorg/asio/pull/54 " Brian Kuhl 13415 Every time I interact with trac for the first time, it claims my email is a sign of spam trac / subversion Boost 1.67.0 To Be Determined Bugs Douglas Gregor new 2018-01-23T05:17:48Z 2018-01-23T05:17:48Z "This is the third annoyance I've found when dealing with your issue tracker. *EVERY* time I try to comment on an issue when using your tracker in a new web browser, on a new machine, or on a machine that hasn't been connected to trac in some time, it *INSISTS* that my email is flagged as ""a source of spam"" and that I have to verify myself through a captcha. You give me no recourse to dispute the assertion that my email is one of a spammer, so I'm left permanently accused of guilt with no way to prove my innocence. I've had my email address for over 25 years. In the early days of spam, they would take other people's legitimate email address and forge spam in their name by using someone else's address as the From: field. This may be how my email address ended up on someone's ""spam"" list. Yet only boost's ancient trac issue tracker is having a hard time with this. I can report issues on github all day long and have no such problems. Having an annoying bug tracker is detrimental to building a useful community. It makes me want to just not bother reporting issues against boost libraries and use something else." Richard 13414 """Reported by me"" doesn't show my tickets" trac / subversion Boost 1.67.0 To Be Determined Bugs Douglas Gregor new 2018-01-23T05:13:23Z 2018-01-23T05:13:23Z "I fill out the preferences and do the ""Issues I reported"" report, but instead I get issues filed by Niall Douglas. If you look at the URL generated by the redirect: https://svn.boost.org/trac10/query?status=assigned&status=new&status=reopened&reporter=~ned14&col=id&col=summary&col=status&col=type&col=milestone&col=component&order=priority&report=49 The URL before redirect is https://svn.boost.org/trac10/report/49 This makes it really difficult to find issues I have reported." Richard 13413 ticket urls in emails are wrong trac / subversion Boost 1.67.0 To Be Determined Bugs Douglas Gregor new 2018-01-22T20:48:48Z 2018-01-22T20:48:48Z "For instance Date: Mon, 22 Jan 2018 19:48:39 -0000 To: undisclosed-recipients: ; cc: boost-bugs@lists.boost.org From: ""Boost C++ Libraries"" Reply-To: Subject: Re: [Boost C++ Libraries] #13388: boost.test doesn't recognize VS 2 017 Re: <064.e6e39a12f4ecd2b7b4662c5b22774588@lists.boost.org> Id: <079.42a6af0375edd2d14082408474e705d9@lists.boost.org> Spam: YES --------- #13388: boost.test doesn't recognize VS 2017 -----------------------------------+------------------------------- Reporter: Richard | Owner: Gennadiy Rozental Type: Bugs | Status: new Milestone: To Be Determined | Component: test Version: Boost 1.66.0 | Severity: Problem Resolution: | Keywords: -----------------------------------+------------------------------- Comment (by Raffi Enficiaud): Kind reminder -- Ticket URL: Boost C++ Libraries Boost provides free peer-reviewed portable C++ source libraries. Ticket URL is wrong. URL should be https://svn.boost.org/trac10/ticket/13388 " Richard 13412 Boost ver1.64.0 doesnt have asio/asoiciated_allocator.hpp asio Boost 1.64.0 To Be Determined Bugs chris_kohlhoff new 2018-01-22T11:38:57Z 2018-05-10T12:03:37Z "I am using boost v 1.64.0 along with beast on ubuntu machine. I am facing issues while compiling that boost/asio/associated_allocator.hpp file doesnt exist. i tried with v1.65.1 as well, getting similar issues. I need to know which version of boost supports associated_allocator.hpp" anonymous 13411 boost::container::small_vector move constructor/assignop not noexcept container Boost 1.63.0 To Be Determined Bugs Ion Gaztañaga new 2018-01-21T13:03:22Z 2018-01-21T13:03:22Z Move-constructing or assigning a `small_vector` should be `noexcept`, if the `value_type` permits it (being itself nothrow move constructible). This will make small_vectors more efficient, and more usable in call sites that require nothrow moves. avi@… 13410 Build failure: function_template.hpp:159:33: error: called object type 'nullptr_t' is not a function or function pointer function Boost 1.66.0 To Be Determined Bugs Douglas Gregor new 2018-01-21T06:14:53Z 2018-02-24T11:54:28Z "RStudio-1.1.409_1 fails to build with clang on FreeBSD-12: {{{ /usr/ports/devel/RStudio/work/rstudio-1.1.409/src/cpp/core/system/Process.cpp In file included from /wrkdirs/usr/ports/devel/RStudio/work/rstudio-1.1.409/src/cpp/core/system/Process.cpp:16: In file included from /wrkdirs/usr/ports/devel/RStudio/work/rstudio-1.1.409/src/cpp/core/include/core/system/Process.hpp:25: In file included from /usr/local/include/boost/function.hpp:70: In file included from /usr/local/include/boost/preprocessor/iteration/detail/iter/forward1.hpp:57: In file included from /usr/local/include/boost/function/detail/function_iterate.hpp:14: In file included from /usr/local/include/boost/function/detail/maybe_include.hpp:29: /usr/local/include/boost/function/function_template.hpp:159:33: error: called object type 'nullptr_t' is not a function or function pointer BOOST_FUNCTION_RETURN((*f)(BOOST_FUNCTION_ARGS)); ^~~~ /usr/local/include/boost/function/function_template.hpp:81:36: note: expanded from macro 'BOOST_FUNCTION_RETURN' # define BOOST_FUNCTION_RETURN(X) X ^ /usr/local/include/boost/function/function_template.hpp:925:53: note: in instantiation of member function 'boost::detail::function::void_function_obj_invoker2::invoke' requested here { { &manager_type::manage }, &invoker_type::invoke }; ^ /usr/local/include/boost/function/function_template.hpp:716:13: note: in instantiation of function template specialization 'boost::function2::assign_to' requested here this->assign_to(f); ^ /usr/local/include/boost/function/function_template.hpp:1061:5: note: in instantiation of function template specialization 'boost::function2::function2' requested here base_type(f) ^ /usr/local/include/boost/function/function_template.hpp:1114:5: note: in instantiation of function template specialization 'boost::function::function' requested here self_type(f).swap(*this); ^ /wrkdirs/usr/ports/devel/RStudio/work/rstudio-1.1.409/src/cpp/core/system/Process.cpp:239:21: note: in instantiation of function template specialization 'boost::function::operator=' requested here cb.onHasSubprocs = NULL; ^ }}} " yuri 13409 Logging For Static Methods At Runtime log Boost 1.54.0 To Be Determined Bugs Andrey Semashev new 2018-01-19T14:34:06Z 2018-01-22T01:44:44Z "Hi, We've been logging with Boost Library in the application. We defined a dynamic class which can be configured differently to write on file, console and server by inheriting from Boost Log library classes. There are other 3rd party libraries in the application we use, and one of them includes **static classes and methods**. In some scenarios of the application, these static methods are called. Our goal is to be able to log for static methods when they are called **at runtime**. As you may also know, the static methods are linked at compile time. So, I can not use our dynamic class for logging. Is there any simple approach I can apply for this purpose ? Thanks in advance, Kind Regards " cranberriess89@… 13408 Boost Library Possible memory Leak thread Boost 1.63.0 To Be Determined Support Requests viboes assigned 2018-01-19T14:30:46Z 2018-04-14T06:37:19Z "Hi, We have been using Boost library in the project. I've made analysis by using Valgrind tool to be able to find possible memory leaks. According to the result, there is a memory leak in Boost library. {{{ ==7535== 24 bytes in 1 blocks are still reachable in loss record 2 of 6 ==7535== at 0x4C2B0E0: operator new(unsigned long) (vg_replace_malloc.c:324) ==7535== by 0x4E430A3: boost::detail::make_external_thread_data() (in /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.55.0) ==7535== by 0x4E433DB: boost::detail::add_new_tss_node(void const*, boost::shared_ptr, void*) (in /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.55.0) ==7535== by 0x4E4408C: boost::detail::set_tss_data(void const*, boost::shared_ptr, void*, bool) (in /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.55.0) ==7535== by 0x54CAC0C: boost::log::v2_mt_posix::core::add_thread_attribute(boost::log::v2_mt_posix::attribute_name const&, boost::log::v2_mt_posix::attribute const&) }}} It seems like the allocated memory is not deallocated, so it causes memory leak. Here is the definition of relevant event ; {{{ thread_data_base* make_external_thread_data() { thread_data_base* const me(detail::heap_new()); me->self.reset(me); set_current_thread_data(me); return me; } thread_data_base* get_or_make_current_thread_data() { thread_data_base* current_thread_data(get_current_thread_data()); if(!current_thread_data) { current_thread_data=make_external_thread_data(); } return current_thread_data; } }}} I've made some research if there is any post which states that this event causes memory leak, but could not find any. Is there any fix for the problem stated above? If there is any, could you please state the relevant patch ? Thanks in advance, Kind Regards " anonymous 13406 Boost 1.65.1 : Boost filesystem error codes for non existent files seems to be incorrect filesystem Boost 1.65.0 To Be Determined Bugs Beman Dawes new 2018-01-19T05:23:24Z 2018-01-19T06:33:53Z "Boost::filesystem::equivalent() when called on two non-existent files , error codes generated seems to be incorrect. I am attaching simple test case which calls boost::filesystem::equivalent() on two non-existent files. #include ""boost/filesystem/operations.hpp"" #include int main() { boost::filesystem::path path1(""foo""); boost::filesystem::path path2(""bar""); boost::system::error_code ec; if(!boost::filesystem::equivalent(path1,path2,ec)) { std::cout<<""error code: "" << ec << std::endl;; std::cout<<""error message: "" << ec.message() << std::endl;; } return 0; } The output of the test case with boost 1.56 is ********************************************** error code: system:2 error message: No such file or directory ********************************************** The output of the test case with boost 1.65 is *********************************************** error code: system:1 error message: Operation not permitted *********************************************** Is this change an intentional one or a bug?" sudhanshu.gupta05@… 13405 Tree-based containers have troubles with move-only types. container Boost 1.66.0 To Be Determined Bugs Ion Gaztañaga new 2018-01-17T17:34:52Z 2018-01-17T17:40:11Z "Specifically, move assignment doesn't work. E.g. test.cpp: {{{ #include #include int main() { boost::container::set> set1, set2; set2 = std::move(set1); } }}} Compiling with clang 5: {{{ $ clang++-5.0 ~/tmp/test.cpp -std=c++14 -o test -stdlib=libc++ -isystem ./boost_1_66_0 In file included from /home/brd/tmp/test.cpp:1: In file included from ./boost_1_66_0/boost/container/set.hpp:28: In file included from ./boost_1_66_0/boost/container/detail/tree.hpp:25: ./boost_1_66_0/boost/container/allocator_traits.hpp:415:51: error: call to implicitly-deleted copy constructor of 'std::__1::unique_ptr >' { ::new((void*)p, boost_container_new_t()) T(::boost::forward(args)...); } ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./boost_1_66_0/boost/container/allocator_traits.hpp:360:28: note: in instantiation of function template specialization 'boost::container::allocator_traits >, void *, boost::container::tree_type_enum::red_black_tree, true> > >::priv_construct >, const std::__1::unique_ptr > &>' requested here allocator_traits::priv_construct(flag, a, p, ::boost::forward(args)...); ^ ./boost_1_66_0/boost/container/detail/node_alloc_holder.hpp:168:36: note: in instantiation of function template specialization 'boost::container::allocator_traits >, void *, boost::container::tree_type_enum::red_black_tree, true> > >::construct >, const std::__1::unique_ptr > &>' requested here allocator_traits::construct ^ ./boost_1_66_0/boost/container/detail/tree.hpp:389:26: note: in instantiation of function template specialization 'boost::container::container_detail::node_alloc_holder > >, boost::intrusive::rbtree_impl >, void *, boost::container::tree_type_enum::red_black_tree, true>, boost::intrusive::rbtree_node_traits, boost::intrusive::link_mode_type::normal_link, boost::intrusive::dft_tag, 3>, void, boost::container::value_to_node_compare >, void *, boost::container::tree_type_enum::red_black_tree, true>, boost::intrusive::tree_value_compare > *, std::__1::less > >, boost::move_detail::identity > >, true> >, unsigned long, true, void> >::create_node > &>' requested here return m_holder.create_node(other.m_data); ^ ./boost_1_66_0/boost/intrusive/detail/node_cloner_disposer.hpp:65:42: note: in instantiation of member function 'boost::container::container_detail::RecyclingCloner > >, boost::intrusive::rbtree_impl >, void *, boost::container::tree_type_enum::red_black_tree, true>, boost::intrusive::rbtree_node_traits, boost::intrusive::link_mode_type::normal_link, boost::intrusive::dft_tag, 3>, void, boost::container::value_to_node_compare >, void *, boost::container::tree_type_enum::red_black_tree, true>, boost::intrusive::tree_value_compare > *, std::__1::less > >, boost::move_detail::identity > >, true> >, unsigned long, true, void> >, true>::operator()' requested here node_ptr n = traits_->to_node_ptr(*base_t::get()(v)); ^ ./boost_1_66_0/boost/intrusive/rbtree_algorithms.hpp:59:20: note: in instantiation of member function 'boost::intrusive::detail::node_cloner > >, boost::intrusive::rbtree_impl >, void *, boost::container::tree_type_enum::red_black_tree, true>, boost::intrusive::rbtree_node_traits, boost::intrusive::link_mode_type::normal_link, boost::intrusive::dft_tag, 3>, void, boost::container::value_to_node_compare >, void *, boost::container::tree_type_enum::red_black_tree, true>, boost::intrusive::tree_value_compare > *, std::__1::less > >, boost::move_detail::identity > >, true> >, unsigned long, true, void> >, true>, boost::intrusive::bhtraits >, void *, boost::container::tree_type_enum::red_black_tree, true>, boost::intrusive::rbtree_node_traits, boost::intrusive::link_mode_type::normal_link, boost::intrusive::dft_tag, 3>, boost::intrusive::algo_types::RbTreeAlgorithms, false>::operator()' requested here node_ptr n = base_t::get()(p); ^ ./boost_1_66_0/boost/intrusive/bstree_algorithms.hpp:1943:55: note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) node_ptr insertion_point = target_sub_root = cloner(current); ^ ./boost_1_66_0/boost/intrusive/bstree.hpp:1040:27: note: in instantiation of function template specialization 'boost::intrusive::rbtree_algorithms >::clone > >, boost::intrusive::rbtree_impl >, void *, boost::container::tree_type_enum::red_black_tree, true>, boost::intrusive::rbtree_node_traits, boost::intrusive::link_mode_type::normal_link, boost::intrusive::dft_tag, 3>, void, boost::container::value_to_node_compare >, void *, boost::container::tree_type_enum::red_black_tree, true>, boost::intrusive::tree_value_compare > *, std::__1::less > >, boost::move_detail::identity > >, true> >, unsigned long, true, void> >, true>, boost::intrusive::bhtraits >, void *, boost::container::tree_type_enum::red_black_tree, true>, boost::intrusive::rbtree_node_traits, boost::intrusive::link_mode_type::normal_link, boost::intrusive::dft_tag, 3>, boost::intrusive::algo_types::RbTreeAlgorithms, false>, boost::intrusive::detail::node_disposer >, void *, boost::container::tree_type_enum::red_black_tree, true> > >, boost::intrusive::bhtraits >, void *, boost::container::tree_type_enum::red_black_tree, true>, boost::intrusive::rbtree_node_traits, boost::intrusive::link_mode_type::normal_link, boost::intrusive::dft_tag, 3>, boost::intrusive::algo_types::RbTreeAlgorithms> >' requested here node_algorithms::clone ^ ./boost_1_66_0/boost/intrusive/rbtree.hpp:240:18: note: in instantiation of function template specialization 'boost::intrusive::bstree_impl >, void *, boost::container::tree_type_enum::red_black_tree, true>, boost::intrusive::rbtree_node_traits, boost::intrusive::link_mode_type::normal_link, boost::intrusive::dft_tag, 3>, void, boost::container::value_to_node_compare >, void *, boost::container::tree_type_enum::red_black_tree, true>, boost::intrusive::tree_value_compare > *, std::__1::less > >, boost::move_detail::identity > >, true> >, unsigned long, true, boost::intrusive::algo_types::RbTreeAlgorithms, void>::clone_from > >, boost::intrusive::rbtree_impl >, void *, boost::container::tree_type_enum::red_black_tree, true>, boost::intrusive::rbtree_node_traits, boost::intrusive::link_mode_type::normal_link, boost::intrusive::dft_tag, 3>, void, boost::container::value_to_node_compare >, void *, boost::container::tree_type_enum::red_black_tree, true>, boost::intrusive::tree_value_compare > *, std::__1::less > >, boost::move_detail::identity > >, true> >, unsigned long, true, void> >, true>, boost::container::container_detail::allocator_destroyer >, void *, boost::container::tree_type_enum::red_black_tree, true> > > >' requested here { tree_type::clone_from(BOOST_MOVE_BASE(tree_type, src), cloner, disposer); } ^ ./boost_1_66_0/boost/container/detail/tree.hpp:759:24: note: in instantiation of function template specialization 'boost::intrusive::rbtree_impl >, void *, boost::container::tree_type_enum::red_black_tree, true>, boost::intrusive::rbtree_node_traits, boost::intrusive::link_mode_type::normal_link, boost::intrusive::dft_tag, 3>, void, boost::container::value_to_node_compare >, void *, boost::container::tree_type_enum::red_black_tree, true>, boost::intrusive::tree_value_compare > *, std::__1::less > >, boost::move_detail::identity > >, true> >, unsigned long, true, void>::clone_from > >, boost::intrusive::rbtree_impl >, void *, boost::container::tree_type_enum::red_black_tree, true>, boost::intrusive::rbtree_node_traits, boost::intrusive::link_mode_type::normal_link, boost::intrusive::dft_tag, 3>, void, boost::container::value_to_node_compare >, void *, boost::container::tree_type_enum::red_black_tree, true>, boost::intrusive::tree_value_compare > *, std::__1::less > >, boost::move_detail::identity > >, true> >, unsigned long, true, void> >, true>, boost::container::container_detail::allocator_destroyer >, void *, boost::container::tree_type_enum::red_black_tree, true> > > >' requested here this->icont().clone_from ^ ./boost_1_66_0/boost/container/set.hpp:360:46: note: in instantiation of member function 'boost::container::container_detail::tree >, boost::move_detail::identity > >, std::__1::less > >, boost::container::new_allocator > >, boost::container::tree_opt >::operator=' requested here { return static_cast(this->base_t::operator=(BOOST_MOVE_BASE(base_t, x))); } ^ /home/brd/tmp/test.cpp:7:10: note: in instantiation of member function 'boost::container::set >, std::__1::less > >, boost::container::new_allocator > >, boost::container::tree_opt >::operator=' requested here set2 = std::move(set1); ^ /home/brd/soft/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/../include/c++/v1/memory:2388:3: note: copy constructor is implicitly deleted because 'unique_ptr >' has a user-declared move constructor unique_ptr(unique_ptr&& __u) noexcept ^ 1 error generated. }}}" Mikhail Kremniov 13404 boost::container::container_detail::forward_as_tuple conflicts with std::forward_as_tuple container Boost 1.66.0 To Be Determined Bugs Ion Gaztañaga new 2018-01-17T17:06:13Z 2018-01-17T17:06:13Z "Internals of libc++ make unqualified calls to forward_as_tuple; this may result in the ""call ... is ambiguous"" error if boost::container::container_detail is one of the associated namespaces for the call. E.g. test.cpp: {{{ #include #include int main() { boost::container::set set; std::tuple_cat(std::make_tuple(set)); } }}} The terminal: {{{ $ clang++-5.0 ~/tmp/test.cpp -std=c++14 -o test -stdlib=libc++ -isystem ./boost_1_66_0 In file included from /home/brd/tmp/test.cpp:1: In file included from ./boost_1_66_0/boost/container/set.hpp:28: In file included from ./boost_1_66_0/boost/container/detail/tree.hpp:36: In file included from ./boost_1_66_0/boost/container/detail/node_alloc_holder.hpp:30: In file included from ./boost_1_66_0/boost/container/detail/allocator_version_traits.hpp:26: In file included from ./boost_1_66_0/boost/container/throw_exception.hpp:27: In file included from /home/brd/soft/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/../include/c++/v1/string:470: In file included from /home/brd/soft/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/../include/c++/v1/string_view:169: In file included from /home/brd/soft/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/../include/c++/v1/__string:56: In file included from /home/brd/soft/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/../include/c++/v1/algorithm:643: In file included from /home/brd/soft/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/../include/c++/v1/memory:653: /home/brd/soft/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/../include/c++/v1/tuple:1318:16: error: call to 'forward_as_tuple' is ambiguous return forward_as_tuple(_VSTD::forward<_Types>(_VSTD::get<_I0>(__t))..., ^~~~~~~~~~~~~~~~ /home/brd/soft/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/../include/c++/v1/tuple:1348:12: note: in instantiation of function template specialization 'std::__1::__tuple_cat, std::__1::__tuple_indices<>, std::__1::__tuple_indices<0> >::operator(), boost::container::new_allocator, boost::container::tree_opt > > >' requested here return __tuple_cat, __tuple_indices<>, ^ /home/brd/tmp/test.cpp:8:10: note: in instantiation of function template specialization 'std::__1::tuple_cat, boost::container::new_allocator, boost::container::tree_opt > >>' requested here std::tuple_cat(std::make_tuple(set)); ^ ./boost_1_66_0/boost/container/detail/variadic_templates_tools.hpp:81:20: note: candidate function [with Values = , boost::container::new_allocator, boost::container::tree_opt >>] tuple forward_as_tuple(Values&&... values) ^ /home/brd/soft/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/../include/c++/v1/tuple:1114:1: note: candidate function [with _Tp = , boost::container::new_allocator, boost::container::tree_opt >>] forward_as_tuple(_Tp&&... __t) _NOEXCEPT ^ 1 error generated. }}} P.S. I wonder, why is boost::container::container_detail::forward_as_tuple needed at all, since it doesn't seem to be used outside of tests. Can it be removed?" Mikhail Kremniov 13402 Log format JUNIT generates invalid XML files with incorrect encoding test Boost 1.66.0 To Be Determined Bugs Gennadiy Rozental new 2018-01-17T07:46:06Z 2018-07-02T11:26:26Z "The encoding of the written JUNIT XML file is CP1252 compiled on Windows with Visual Studio 2013, but the encoding in XML is 'encoding=""UTF-8""'. The output should be always converted to 'UTF-8' or the XML encoding in JUNIT file should be replaced by the encoding of the stream. Example output file: {{{ }}} " gallien@… 13401 Specialization of consuming_buffers for null_buffers declares wrong interface asio Boost 1.66.0 To Be Determined Bugs chris_kohlhoff new 2018-01-16T21:23:04Z 2018-01-16T21:23:04Z "The specialization for null_buffers has a typo on the name of the method total_consumed, it misses the final ""d"". Pull request with the fix: https://github.com/boostorg/asio/pull/78" Juan Ramirez 13400 "boost::archive::xml_iarchive Exception in destructor: ""input stream error-No error""" serialization Boost 1.66.0 To Be Determined Bugs Robert Ramey new 2018-01-16T14:09:06Z 2018-02-17T15:34:36Z "The sample code: #include #include #include #include #include #include #include #include std::ifstream ifs(""commandKeyToAction.xml""); auto newCommandKeyToAction = std::unordered_map>>(); boost::archive::xml_iarchive xmlIn(ifs); xmlIn >> boost::serialization::make_nvp(""options"", newCommandKeyToAction); " Andrei Bryleuski 13399 pthread_create segfaults when program is restarted after some time asio Boost 1.56.0 To Be Determined Bugs chris_kohlhoff new 2018-01-16T08:35:32Z 2018-01-16T09:14:23Z "Hi, We are using boost 1.56 version on CentOS 7.4.1708 (Core) This bug happens from time to time when we are restating application, while simulated multiple clients send message to the server. {{{ [Switching to Thread 0x7fffeb6ac700 (LWP 27894)] processMessageImpl ( data_=""STRING DATA""...) at main.cpp:564 564 if (!client->connected) (gdb) bt full #0 processMessageImpl ( data_=""CONTENT DATA DELETED""...) at main.cpp:564 parseSucc = dataStream = { >> = { >> = { = {_vptr.ios_base = 0x7fffeb6ac700, static boolalpha = std::_S_boolalpha, static dec = std::_S_dec, static fixed = std::_S_fixed, static hex = std::_S_hex, static internal = std::_S_internal, static left = std::_S_left, static oct = std::_S_oct, static right = std::_S_right, static scientific = std::_S_scientific, static showbase = std::_S_showbase, static showpoint = std::_S_showpoint, static showpos = std::_S_showpos, static skipws = std::_S_skipws, static unitbuf = std::_S_unitbuf, static uppercase = std::_S_uppercase, static adjustfield = std::_S_adjustfield, static basefield = std::_S_basefield, static floatfield = std::_S_floatfield, static badbit = std::_S_badbit, static eofbit = std::_S_eofbit, static failbit = std::_S_failbit, static goodbit = std::_S_goodbit, static app = std::_S_app, static ate = std::_S_ate, static binary = std::_S_bin, static in = std::_S_in, static out = std::_S_out, static trunc = std::_S_trunc, static beg = std::_S_beg, static cur = std::_S_cur, static end = std::_S_end, _M_precision = 0, _M_width = 0, _M_flags = 3825362640, _M_exception = (std::_S_badbit | std::_S_eofbit | std::_S_failbit | unknown: 32760), _M_streambuf_state = (unknown: 3825235264), _M_callbacks = 0x6ee9a0, _M_word_zero = { _M_pword = 0x7fffeb6abb30, _M_iword = 7268672}, _M_local_word = {{_M_pword = 0x0, _M_iword = 4528892}, {_M_pword = 0x0, _M_iword = 140737018779704}, {_M_pword = 0x0, _M_iword = 140737351885008}, {_M_pword = 0x6ea448, _M_iword = 140737018597424}, {_M_pword = 0x0, _M_iword = 152}, {_M_pword = 0x100007f27820002, _M_iword = 0}, {_M_pword = 0x0, _M_iword = 140733193388032}, {_M_pword = 0x4517b0 , _M_iword = 0}}, _M_word_size = 7268672, _M_word = 0x7fffe40266d0, _M_ios_locale = {static none = 0, static ctype = 1, static numeric = 2, static collate = 4, static time = 8, static monetary = 16, static messages = 32, static all = 63, _M_impl = 0xffffffff, static _S_classic = 0x7ffff667be00 <(anonymous namespace)::c_locale_impl>, static _S_global = 0x7ffff667be00 <(anonymous namespace)::c_locale_impl>, static _S_categories = 0x7ffff665f900 <__gnu_cxx::category_names>, static _S_once = 2}}, _M_tie = 0x7fffe40ca4c0, _M_fill = 30 '\036', _M_fill_init = false, _M_streambuf = 0x7fffeb6abbe0, _M_ctype = 0x6bf770, _M_num_put = 0x49182c ::assign_to(void (*)(std::string))::stored_vtable+12>, _M_num_get = 0x1}, _vptr.basic_istream = 0x7fffeb6ac700, _M_gcount = 0}, _M_stringbuf = { >> = {_vptr.basic_streambuf = 0x0, _M_in_beg = 0x7fffe40266d0 """", _M_in_cur = 0x7fffe4007540 ""0\321I"", _M_in_end = 0x6ee9a0 ""\200\027"", _M_out_beg = 0x7fffeb6abb30 ""\002"", _M_out_cur = 0x6ee940 ""p\327k"", _M_out_end = 0x0, _M_buf_locale = {static none = 0, static ctype = 1, static numeric = 2, static collate = 4, static time = 8, static monetary = 16, static messages = 32, static all = 63, _M_impl = 0x451afc , static _S_classic = 0x7ffff667be00 <(anonymous namespace)::c_locale_impl>, static _S_global = 0x7ffff667be00 <(anonymous namespace)::c_locale_impl>, static _S_categories = 0x7ffff665f900 <__gnu_cxx::category_names>, static _S_once = 2}}, _M_mode = (unknown: 0), _M_string = """"}} tree = {m_data = , m_children = 0x9} spId = url = """" client = 0x0 v1_9Flag = #1 0x0000000000434c8a in operator()), boost::_bi::list0> (f=@0x7fffeb6abc70: 0x42f490 , a=, this=0x7fffeb6abc78) at /usr/local/include/boost/bind/bind.hpp:253 No locals. #2 operator() (this=0x7fffeb6abc70) at /usr/local/include/boost/bind/bind_template.hpp:20 No locals. #3 asio_handler_invoke), boost::_bi::list1 > > > > (function=...) at /usr/local/include/boost/asio/handler_invoke_hook.hpp:69 No locals. #4 invoke), boost::_bi::list1 > > >, boost::_bi::bind_t), boost::_bi::list1 > > > > (context=..., function=...) at /usr/local/include/boost/asio/detail/handler_invoke_helpers.hpp:37 No locals. #5 boost::asio::detail::completion_handler > > >::do_complete (owner=0x6bf770, base=) at /usr/local/include/boost/asio/detail/completion_handler.hpp:68 h = p = {h = , v = 0x0, p = 0x0} handler = {f_ = 0x42f490 , l_ = {, std::allocator > > >> = {a1_ = { t_ = ""CONTENT DATA DELETED""...}}, }} #6 0x000000000043ca00 in complete (bytes_transferred=, ec=..., owner=..., this=) at /usr/local/include/boost/asio/detail/task_io_service_operation.hpp:38 No locals. #7 do_run_one (ec=..., this_thread=..., lock=..., this=0x6bf770) at /usr/local/include/boost/asio/detail/impl/task_io_service.ipp:372 task_result = on_exit = {task_io_service_ = 0x6bf770, lock_ = 0x7fffeb6abcc0, this_thread_ = 0x7fffeb6abd30} more_handlers = true #8 boost::asio::detail::task_io_service::run (this=0x6bf770, ec=...) at /usr/local/include/boost/asio/detail/impl/task_io_service.ipp:149 this_thread = { = { = {}, reusable_memory_ = 0x7fffe40983b0}, private_op_queue = { = {}, front_ = 0x0, back_ = 0x0}, private_outstanding_work = 0} ctx = { = {}, key_ = 0x6bf770, value_ = 0x7fffeb6abd30, next_ = 0x0} lock = { = {}, mutex_ = @0x6bf7a0, locked_ = false} n = 70 #9 0x000000000043ffb5 in boost::asio::io_service::run (this=0x6bd770 ) at /usr/local/include/boost/asio/impl/io_service.ipp:59 ec = {m_val = 0, m_cat = 0x7ffff7dda0d0 } s = #10 0x00007ffff6ed030a in thread_proxy () from /lib64/libboost_thread.so.1.56.0 No symbol table info available. #11 0x00007ffff77bae25 in start_thread (arg=0x7fffeb6ac700) at pthread_create.c:308 __res = pd = 0x7fffeb6ac700 }}} {{{ // Some comments here #0 processMessageImpl ( data_=""{\""CONTENT DATA DELETED""...) at main.cpp:564 #1 0x0000000000434c8a in operator()), boost::_bi::list0> (f=@0x7fffeb6abc70: 0x42f490 , a=, this=0x7fffeb6abc78) at /usr/local/include/boost/bind/bind.hpp:253 #2 operator() (this=0x7fffeb6abc70) at /usr/local/include/boost/bind/bind_template.hpp:20 #3 asio_handler_invoke), boost::_bi::list1 > > > > (function=...) at /usr/local/include/boost/asio/handler_invoke_hook.hpp:69 #4 invoke), boost::_bi::list1 > > >, boost::_bi::bind_t), boost::_b i::list1 > > > > (context=..., function=...) at /usr/local/include/boost/asio/detail/handler_invoke_helpers.hpp:37 #5 boost::asio::detail::completion_handler > > >::do_complete (owner=0x6bf770, base=) at /usr/local/include/boost/asio/detail/completion_handler.hpp:68 #6 0x000000000043ca00 in complete (bytes_transferred=, ec=..., owner=..., this=) at /usr/local/include/boost/asio/detail/task_io_service_operation.hpp:38 #7 do_run_one (ec=..., this_thread=..., lock=..., this=0x6bf770) at /usr/local/include/boost/asio/detail/impl/task_io_service.ipp:372 #8 boost::asio::detail::task_io_service::run (this=0x6bf770, ec=...) at /usr/local/include/boost/asio/detail/impl/task_io_service.ipp:149 #9 0x000000000043ffb5 in boost::asio::io_service::run (this=0x6bd770 ) at /usr/local/include/boost/asio/impl/io_service.ipp:59 #10 0x00007ffff6ed030a in thread_proxy () from /lib64/libboost_thread.so.1.56.0 #11 0x00007ffff77bae25 in start_thread (arg=0x7fffeb6ac700) at pthread_create.c:308 #12 0x00007ffff5b9234d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113 }}} " ttomas.mikalauskas@… 13392 deadline_timer -> endless handler recursion, if it should have been cancelled. asio Boost 1.65.0 To Be Determined Bugs chris_kohlhoff new 2018-01-11T10:25:23Z 2018-01-11T10:57:32Z "Following http://www.boost.org/doc/libs/1_65_0/doc/html/boost_asio/reference/deadline_timer.html example, I made a modification to do a cyclic timer: {{{ void MyClass::on_timeout() { // Here I rely on the documentation, which states that: // basic_deadline_timer::expires_at (2 of 3 overloads) : // // **Any pending asynchronous wait operations will be cancelled.** // // that is no need for // // if (error) // { // return; // } mTimer.expires_at(mTimer.expires_at() + boost::posix_time::seconds(2)); mTimer.async_wait(on_timeout); mIoService.post(boost::bind(&MyClass::mDoWorkCallback, this)); } }}} Further I have {{{ void MyClass::Restart() { // Here I rely on the documentation, which states that: // basic_deadline_timer::expires_from_now (2 of 3 overloads) : // // **Any pending asynchronous wait operations will be cancelled.** // mTimer.expires_from_now(boost::posix_time::seconds(2)); mTimer.async_wait(on_timeout); } }}} What happens is not what I expect. If I don't call ''Restart()'' everything works fine, i.e.'' asyn_wait(handlers)'' are interrupted. But If I call once ''Restart()'', and after the call ''expires_from_now'' is executed inside, the ''on_timeout'' handler is called in an endless recursion regardless the time value of the timer. For example, value is 5 seconds, but the handler is called many times in a millisecond (with ''operation aborted(995)'' as an error argument, i.e. its been continuously cancelled). I also get **once** an error message when calling ''expires_from_now'' : {{{ operation aborted(995) The I/O operation has been aborted because of either a thread exit or an application request }}} which would mean OK to me : the handler was canceled. But nevertheless it continues to be executed. The above behavior doesn't occur if I uncomment following code in the handler if (error) { return; } The above seems to me buggy. And to you ?" HeinrichBoost 13391 Typo in documentation interprocess Boost 1.63.0 To Be Determined Bugs Ion Gaztañaga new 2018-01-11T08:20:59Z 2018-01-11T08:34:21Z "Hello all, This is small fix for doubled ""between"" in offset_ptr documentation. {{{ Index: boost/interprocess/offset_ptr.hpp =================================================================== --- boost/interprocess/offset_ptr.hpp (revision 86799) +++ boost/interprocess/offset_ptr.hpp (working copy) @@ -214,7 +214,7 @@ } //namespace ipcdetail { /// @endcond -//!A smart pointer that stores the offset between between the pointer and the +//!A smart pointer that stores the offset between the pointer and the //!the object it points. This allows offset allows special properties, since //!the pointer is independent from the address address of the pointee, if the //!pointer and the pointee are still separated by the same offset. This feature }}} ---\\ Kind regards,\\ Valeriy Kireev ,\\ Developer -- TuneIT Company. " valeriykireev@… 13390 Bootstrapping Boost 1.66 fails on Windows 10 using wingw gcc build Boost 1.66.0 Bugs Vladimir Prus new 2018-01-11T04:46:31Z 2018-01-23T00:33:21Z "I'm attempting to bootstrap boost 1.66 on a Windows 10 machine so I can use it with Code::Blocks and wxWidgets It fails when running ./bootstrap.bat gcc It appears to be failing to find two functions: UnregisterWait and RegisterWaitForSingleObject Please see the attached images for error message and generated log" hepler@… 13389 rbtree_best_fit.hpp:grow() if condition error interprocess Boost 1.66.0 To Be Determined Bugs Ion Gaztañaga new 2018-01-11T01:57:50Z 2018-01-11T01:57:50Z "in file boost/interprocess/mem_algo/rbtree_best_fit.hpp:480 func: {{{ void rbtree_best_fit::grow(size_type extra_size) { ... if((m_header.m_size - old_border_offset) < MinBlockUnits){ return; } ... } }}} condition error. the if condition should be : {{{ if((m_header.m_size - old_border_offset) < MinBlockUnits*Alignment) { return; } }}} " jakciehan 13385 "Docs for for_each() should be clearer about forbidding ""any non-constant operation""" range Boost 1.66.0 To Be Determined Bugs Neil Groves new 2018-01-09T12:19:51Z 2018-01-09T12:19:51Z "The docs for Range's (single-range) `for_each()` function specify the requirement: > !UnaryFunction does not apply any non-constant operation through its argument. I think this wording could it be clearer. Does it mean that the it mustn't modify the value passed to it? If not, I think it would benefit from rewording. If so, isn't that quite different to `std::for_each()`. If that's deliberate, I suggest it's worth a brief note highlighting and justifying the difference. Otherwise, I suggest it's worth fixing. Thanks very much." Tony Lewis 13384 Captcha rejected all my attempts; ticket text lost trac / subversion Bugs Douglas Gregor new 2018-01-09T11:47:17Z 2018-01-17T12:08:57Z "I just tried to create a new ticket. It had external links so I was forced to a captcha. I tried the captcha about 6 times and then gave up. It's quite possible I'm very bad at captcha but I didn't think I was *that* bad. Also, it's very vexing to lose all the text you've just crafted. Please can the captcha pages include the plain text you're trying to submit below the captcha?" Tony Lewis 13383 Doc for is_sorted() incorrectly states the predicate defaults to std::less_equal algorithm Boost Development Trunk To Be Determined Bugs Marshall Clow new 2018-01-09T11:32:09Z 2018-01-09T11:50:46Z " {{{#!cpp #include #include #include int main () { std::vector a = { 1, 2, 2, 3 }; std::cerr << ""default : "" << std::boolalpha << boost::algorithm::is_sorted( a ) << ""\n""; std::cerr << ""less : "" << std::boolalpha << boost::algorithm::is_sorted( a, std::less <>{} ) << ""\n""; std::cerr << ""less_equal: "" << std::boolalpha << boost::algorithm::is_sorted( a, std::less_equal<>{} ) << ""\n""; } }}}" Tony Lewis 13382 Bug in polygon OR operation with collinear points polygon Boost 1.66.0 To Be Determined Bugs Lucanus Simonson new 2018-01-08T15:14:40Z 2018-05-10T15:58:37Z "When OR operation is performed between 2 non-overlapping polygons that contain collinear points with the same y coordinate, the resulting set is empty. However, if collinear points are removed, the resulting set contains the 2 polygons. If generic polygon_set_data objects are used, the OR operation works fine. The problem appears when polygon_90_set_data objects are used in order to increase efficiency of boolean operations." k.daloukas@… 13379 covered_by not implemented for (Box, MultiPolygon) geometry Boost 1.66.0 To Be Determined Bugs Barend Gehrels new 2018-01-04T14:27:36Z 2018-06-14T10:34:24Z If I remember correctly, Barend mentioned in some email conversation that this should actually be implemented. Volker Schöch 13375 Crash with python 3.6 on Mac OS X 10.12 (Sierra) python USE GITHUB Boost 1.66.0 To Be Determined Bugs Ralf W. Grosse-Kunstleve new 2018-01-03T11:41:51Z 2018-01-03T11:41:51Z "Hello All, I'm experiencing a crash in boost-python with python 3.6 on OS X. I'm trying to wrap the open-source image processing library pink (www.pinkhq.com). This has been working well for some time with python 2.7 (on OS X, but also Linux and Windows), but I'd like to move to python 3.x I've successfully wrapped this library with python 3.6 on Linux, but it crashes on OS X : {{{ Process: python3.6 [98793] Path: /opt/anaconda/*/python3.6 Identifier: python3.6 Version: ??? Code Type: X86-64 (Native) Parent Process: ??? [98792] Responsible: python3.6 [98793] User ID: 501 Date/Time: 2018-01-03 12:09:43.172 +0100 OS Version: Mac OS X 10.12.6 (16G29) Report Version: 12 Anonymous UUID: 87D66E9B-D5BC-7C41-9079-8F7CB5C5E1DF Time Awake Since Boot: 240000 seconds System Integrity Protection: enabled Crashed Thread: 0 Dispatch queue: com.apple.main-thread Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Codes: KERN_INVALID_ADDRESS at 0x00000000000000a9 Exception Note: EXC_CORPSE_NOTIFY Termination Signal: Segmentation fault: 11 Termination Reason: Namespace SIGNAL, Code 0xb Terminating Process: exc handler [0] VM Regions Near 0xa9: --> __TEXT 000000010f87a000-000000010fb25000 [ 2732K] r-x/rwx SM=COW /opt/anaconda/*/*.6 Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 python 0x000000010fa4f28d visit_decref + 13 1 python 0x000000010f920947 tupletraverse + 55 2 python 0x000000010fa4e0f3 collect + 291 3 python 0x000000010fa4f8b6 _PyObject_GC_Alloc + 310 4 python 0x000000010f9217d5 PyTuple_New + 277 5 libboost_python3.dylib 0x0000000113664d2a boost::python::objects::function::function(boost::python::objects::py_function const&, boost::python::detail::keyword const*, unsigned int) + 714 (errors.hpp:44) }}} This crash seems to indicate the problem is in libboost_python ; Unfortunately I cannot do much more at this point because gdb is not allowing me to set breakpoints and I don't know why. However, does this ring a bell with anyone ? can anyone offer suggestions ? All the best." Hugues Talbot 13374 Boykov Kolmogorov warning with float graph Boost 1.63.0 To Be Determined Bugs Jeremiah Willcock new 2018-01-03T11:22:25Z 2018-01-03T11:22:25Z "In boykov_kolmogorov_max_flow.hpp, some values put in property_map are integer : {{{ l.176 put(m_res_cap_map, from_source, 0); l.190 put(m_dist_map, current_node, 1); l.196 put(m_res_cap_map, to_sink, 0); l.202 put(m_dist_map, current_node, 1); l.208 put(m_res_cap_map, from_source, 0); l.217 put(m_dist_map, current_node, 1); l.228 put(m_dist_map, current_node, 1); }}} It causes a C4244 warning in property_map/property_map.hpp (l.310) when using floating distance and floating cost. An easy way to prevent this is to patch as follow: {{{ l.176 put(m_res_cap_map, from_source, tEdgeVal(0)); l.190 put(m_dist_map, current_node, tDistanceVal(1)); l.196 put(m_res_cap_map, to_sink, tEdgeVal(0)); l.202 put(m_dist_map, current_node, tDistanceVal(1)); l.208 put(m_res_cap_map, from_source, 0); l.217 put(m_dist_map, current_node, tDistanceVal(1)); l.228 put(m_dist_map, current_node, tDistanceVal(1)); }}} Compiler: VS2017" cyril.novel@… 13372 "Boost Preprocessing: compiler error: macro ""BOOST_PP_VARIADIC_ELEM_2"" requires 4 arguments, but only 2 given" preprocessor Boost 1.64.0 To Be Determined Bugs No-Maintainer new 2018-01-01T19:30:49Z 2018-01-27T09:10:21Z "The following code produces the following compiler error when compiled with gcc 7.2.0 or clang 3.8.0 {{{ error: macro ""BOOST_PP_VARIADIC_ELEM_2"" requires 4 arguments, but only 2 given }}} {{{ #include #define CREATE_ENUM_ELEMENT(elementTuple) \ BOOST_PP_IF(BOOST_PP_EQUAL(BOOST_PP_TUPLE_SIZE(elementTuple), 3), \ BOOST_PP_TUPLE_ELEM(0, elementTuple) = BOOST_PP_TUPLE_ELEM(2, elementTuple), \ BOOST_PP_TUPLE_ELEM(0, elementTuple) \ ), enum class MyEnum { CREATE_ENUM_ELEMENT((El1)) }; int main() { return 0; } }}} (online demo: http://coliru.stacked-crooked.com/a/f01351ee7a0ca55d ) " Dmitrii B 13369 [Windows] Cannot handle symbolic links filesystem Boost 1.66.0 To Be Determined Bugs Beman Dawes new 2017-12-30T07:26:05Z 2018-06-08T21:31:31Z "I wanted to port my application from Linux to Windows, but shortcut handling is not working. Symlink creation, resolution and detection is not possible on my Windows 10 (Version 1709). Tested with Boost 1.66.0 and 1.64.0. Compiled the Boost Libraries with MSVC (Version 19.10.25019 for x86 and x64). Getting the exception ""boost::filesystem::create_symlink: A required privilege is not held by the client"" Example: {{{ #include namespace fs = boost::filesystem; int main(){ try{ fs::create_symlink(""/path/to_target"", ""/path/to/link""); } catch(const std::exception& err){ std::cerr << err.what() << '\n'; } } }}} Also boost::fileystem::canonical() is not working for me. Tested with extensions "".lnk"" and "".url"" and without extension, gives me the path to the symbolic link itself (with .lnk), otherwise path not found. {{{ int main(){ fs::path path = ""/path/to/shortcut""; for(const auto& ext : {"""", "".lnk"", "".url""}){ try{ std::cout << fs::canonical(path.string() + ext) << '\n'; } catch(const std::exception& err){ std::cerr << err.what() << '\n'; } } }}} Also symlinks cannot be detected by fs::is_symlink() on my Windows system. {{{ int main(){ fs::path path = ""/path/to/shortcut""; for(const auto& ext : {"""", "".lnk"", "".url""}){ auto s = fs::symlink_status(path.string() + ext); std::cout << (s.type() == fs::file_type::symlink_file) << ',' << fs::is_symlink(s) << '\n'; } } }}} Returns always false." 0x0c0ff33.1523@… 13368 consuming_buffers.hpp: parse error in template argument list asio Boost 1.66.0 To Be Determined Bugs chris_kohlhoff new 2017-12-28T15:34:31Z 2018-05-08T10:08:21Z "{{{ .../boost/boost/boost/asio/detail/consuming_buffers.hpp: In member function ‘boost::asio::detail::consuming_buffers::prepared_buffers_type boost::asio::detail::consuming_buffers::prepare(std::size_t)’: .../boost/boost/boost/asio/detail/consuming_buffers.hpp:105:50: erreur: parse error in template argument list while (next != end && max_size > 0 && result.count < result.max_buffers) ^ }}} Context: Upgrade from 1_65_1 to 1_66 - Ubuntu 16.04 LTS / g++ v 5.4.0 - CentOS 7 / g++ v 4.8.5 " anonymous 13367 lockfree need update lockfree Boost Release Branch To Be Determined Tasks timblechmann new 2017-12-26T06:50:35Z 2017-12-26T06:51:51Z "The latest lockfree contains the fix: https://github.com/boostorg/lockfree/commit/582b27bf0b56a64af16ceda0a275cea2c87381ad, need update the reference in boost." PhoebeHui 13364 xxx please delete - it was my fault xxx asio Boost 1.66.0 To Be Determined Bugs chris_kohlhoff new 2017-12-25T23:52:32Z 2017-12-26T21:30:57Z The steady_timer is working fine when it is started in the executeable. By starting the steady_timer in the dll, the timer expires immediately. I think this is a bug, isn't it? anonymous 13363 locale not compatible(not compilable) with c++17 mode in VS2017 locale Boost 1.66.0 To Be Determined Bugs Artyom Beilis new 2017-12-24T14:56:21Z 2017-12-24T14:56:21Z "Trying config and compile boost 1.66 with c++17 mode in vs2017 (v15.5.2), got a lot of errors in build locale lib. There is config for config c++17 mode for vs2017 {{{ b2 --stagedir=./stage/win32 --without-mpi --without-python --without-coroutine --build-type=complete --toolset=msvc-14.1 cxxstd=17 -j8 }}} " aleksander.matveyev@… 13361 Host boost.org using HTTPS Documentation To Be Determined Tasks Matias Capeletto new 2017-12-24T13:56:12Z 2018-05-10T11:59:50Z For security reasons, it would be good if all Boost websites are hosted using HTTPS so that all traffic is encrypted and authenticated. anonymous 13360 std::numeric_limits methods fail to compile in C++11 mode multiprecision Boost 1.66.0 To Be Determined Bugs John Maddock new 2017-12-24T12:37:40Z 2017-12-28T21:16:49Z "The following code compiles fine in C++03 mode, but fails in C++11 mode. This happens in boost 1.66.0, but didn't happen in 1.63.0. {{{ #include int main() { std::numeric_limits::min(); } }}} Similar problem with some other methods — those which return without explicit construction of {{{number_type}}}. I'm compiling with g++ using the following command line: {{{ g++ -std=c++11 boost-test.cpp -o boost-test -fext-numeric-literals -lquadmath }}} The compiler prints the following error: {{{ In file included from boost-test.cpp:1:0: /usr/include/boost/multiprecision/float128.hpp: In instantiation of ‘static std::numeric_limits >::number_type std::numeric_limits >::min() [with boost::multiprecision::expression_template_option ExpressionTemplates = (boost::multiprecision::expression_template_option)0u; std::numeric_limits >::number_type = boost::multiprecision::number]’: boost-test.cpp:4:59: required from here /usr/include/boost/multiprecision/float128.hpp:645:55: error: could not convert ‘3.3621031431120935062626778173217526e-4932’ from ‘__float128’ to ‘std::numeric_limits >::number_type {aka boost::multiprecision::number}’ static number_type (min)() BOOST_NOEXCEPT { return 3.36210314311209350626267781732175260e-4932Q; } ^ }}}" b7.10110111@… 13359 windows_intermodule_singleton.hpp line 118, for version 1.62 throws warning error for possible loss of data interprocess Boost 1.62.0 To Be Determined Bugs Ion Gaztañaga new 2017-12-22T18:10:01Z 2018-05-10T11:59:21Z "It happens for vs12 compiler, for windows_intermodule_singleton.hpp line 118. Fix is simple, just mask it appropriately: initial_count = boost::uint32_t(caster.addr_uint64 & 0xFFFFFFFF);" anonymous 13358 boost::process on_exit fails when using multiple processes process Boost 1.65.0 To Be Determined Bugs new 2017-12-22T15:30:28Z 2017-12-22T20:34:26Z " {{{ int main() { boost::asio::io_service ios; boost::asio::io_service::work working(ios); proc::child c1(""/bin/sleep 1"", ios, proc::on_exit=[](int exit, const std::error_code& ec_in){std::cout<<""11111""<>::back() returns reference to temporary range Boost 1.61.0 To Be Determined Bugs Neil Groves new 2017-12-22T14:00:47Z 2017-12-22T14:02:04Z "boost::iterator_range>::back() returns reference to temporary it's created by {{{ using RangeRawType = std::uint64_t; inline Range makeRange( RangeRawType begin, RangeRawType end = std::numeric_limits::max()) { return boost::counting_range(begin, end); } }}} After investigation code of back() it probably returns reference to temporary value: {{{ reference back() const { BOOST_ASSERT(!this->empty()); return *boost::prior(this->m_End); } }}} So it returns just a junk (or rather this reference points to some random data). Code is the same in the newest boost (1.66 at time of writing). " Mikołaj Milej 13354 xml_iarchive destructor calls abort() serialization Boost 1.66.0 To Be Determined Bugs Robert Ramey new 2017-12-20T13:52:47Z 2018-02-17T15:31:08Z "In the following Unit Test from VS2017 15.5.2 with Boost 1.66.0 from vcpkg, boost::archive::xml_iarchive() is successfully used to load an integer. When it goes out of scope, its destructor calls abort(). {{{ #include ""stdafx.h"" #include ""CppUnitTest.h"" using namespace Microsoft::VisualStudio::CppUnitTestFramework; #include #include #include #include #include namespace UtilityLibTest { class XmlArchiveTest { public: XmlArchiveTest() { m_value = 4; } int Value() const { return m_value; } void Value(const int v) { m_value = v; } private: friend class boost::serialization::access; void load(boost::archive::xml_iarchive & ar, unsigned int version) { ar & BOOST_SERIALIZATION_NVP(m_value); } void save(boost::archive::xml_oarchive & ar, unsigned int version) const { ar & BOOST_SERIALIZATION_NVP(m_value); } BOOST_SERIALIZATION_SPLIT_MEMBER() protected: int m_value; }; TEST_CLASS(UnitTest1) { public: TEST_METHOD(XmlArchive_SaveLoad) { XmlArchiveTest store; // save block std::stringstream xml(std::stringstream::out); boost::archive::xml_oarchive archive(xml); archive & BOOST_SERIALIZATION_NVP(store); xml.flush(); auto xml1 = xml.str(); store.Value(234); // load block std::stringstream xml2; xml2 << xml1; boost::archive::xml_iarchive archive2(xml2); archive2 & BOOST_SERIALIZATION_NVP(store); Assert::AreEqual(4, store.Value(), L""4 != store.Value""); } }; } }}} Call stack {{{ > ucrtbased.dll!issue_debug_notification(const wchar_t * const message) Line 28 C++ Non-user code. Symbols loaded. ucrtbased.dll!__acrt_report_runtime_error(const wchar_t * message) Line 154 C++ Non-user code. Symbols loaded. ucrtbased.dll!abort() Line 51 C++ Non-user code. Symbols loaded. ucrtbased.dll!terminate() Line 59 C++ Non-user code. Symbols loaded. vcruntime140d.dll!FindHandler(EHExceptionRecord * pExcept, EHRegistrationNode * pRN, _CONTEXT * pContext, void * pDC, const _s_FuncInfo * pFuncInfo, unsigned char recursive, int CatchDepth, EHRegistrationNode * pMarkerRN) Line 627 C++ Non-user code. Symbols loaded. vcruntime140d.dll!__InternalCxxFrameHandler(EHExceptionRecord * pExcept, EHRegistrationNode * pRN, _CONTEXT * pContext, void * pDC, const _s_FuncInfo * pFuncInfo, int CatchDepth, EHRegistrationNode * pMarkerRN, unsigned char recursive) Line 347 C++ Non-user code. Symbols loaded. vcruntime140d.dll!__CxxFrameHandler(EHExceptionRecord * pExcept, EHRegistrationNode * pRN, void * pContext, void * pDC) Line 219 C++ Non-user code. Symbols loaded. ntdll.dll!ExecuteHandler2@20() Unknown Non-user code. Symbols loaded. ntdll.dll!ExecuteHandler@20() Unknown Non-user code. Symbols loaded. ntdll.dll!_KiUserExceptionDispatcher@8() Unknown Non-user code. Symbols loaded. KernelBase.dll!_RaiseException@16() Unknown Non-user code. Symbols loaded. vcruntime140d.dll!_CxxThrowException(void * pExceptionObject, const _s__ThrowInfo * pThrowInfo) Line 136 C++ Non-user code. Symbols loaded. boost_serialization-vc141-mt-gd-x32-1_66.dll!0fe82f45() Unknown No symbols loaded. [Frames below may be incorrect and/or missing, no symbols loaded for boost_serialization-vc141-mt-gd-x32-1_66.dll] Annotated Frame boost_serialization-vc141-mt-gd-x32-1_66.dll!0fec45ad() Unknown No symbols loaded. boost_serialization-vc141-mt-gd-x32-1_66.dll!0fec72fc() Unknown No symbols loaded. boost_serialization-vc141-mt-gd-x32-1_66.dll!0fec7d33() Unknown No symbols loaded. UnitTestsUtilityLib.dll!boost::archive::xml_iarchive::~xml_iarchive() Line 129 C++ Symbols loaded. UnitTestsUtilityLib.dll!UtilityLibTest::UnitTest1::XmlArchive_SaveLoad() Line 72 C++ Symbols loaded. }}}" anonymous 13353 Distance segment-box wrong result for spherical CS geometry Boost Development Trunk To Be Determined Bugs Barend Gehrels new 2017-12-20T13:07:53Z 2017-12-20T13:07:53Z "The distance algorithm for segment-box for spherical CS does not treat correctly some cases. For example when the segment endpoints are not inside the box but the segment intersects it (because of curvature, segment follow a geodesic/great circle but box horizontal segment not). An example code follows: {{{ #include #include #include namespace bg = boost::geometry; template void test_all_geometry_types(CT radius_multiplier) { bg::model::segment s; bg::model::box b; std::cout.precision(15); { bg::read_wkt(""SEGMENT(10 9.99, 20 9.99)"", s); bg::read_wkt(""BOX(10 10, 20 20)"", b); std::cout << ""dist="" << bg::distance(b, s) * radius_multiplier << std::endl; std::cout << ""disj="" << bg::disjoint(b, s) << std::endl; } { bg::read_wkt(""SEGMENT(10 10, 20 10)"", s); bg::read_wkt(""BOX(10 10, 20 20)"", b); std::cout << ""dist="" << bg::distance(b, s) * radius_multiplier << std::endl; std::cout << ""disj="" << bg::disjoint(b, s) << std::endl; } } int main() { typedef double CT; std::cout << ""Cartesian"" << std::endl; typedef bg::model::point cpoint; test_all_geometry_types(1); std::cout << ""Spherical"" << std::endl; typedef bg::model::point > spoint; test_all_geometry_types(bg::formula::mean_radius(bg::srs::spheroid())); return 0; } }}} the output in my system (i.e. gcc version 4.8.5 (Ubuntu 4.8.5-2ubuntu1~14.04.1)) is {{{ Cartesian dist=0.00999999999999979 disj=1 dist=0 disj=0 Spherical dist=63710.0877141492 disj=0 dist=0 disj=0 }}} the case where dist=63710.0877141492 and disj=0 is wrong since the objects intersect but the distance is not 0. " Vissarion Fisikopoulos 13352 1.66 i686-w64-mingw32-g++-win32 asio Boost 1.66.0 To Be Determined Bugs chris_kohlhoff new 2017-12-19T15:19:04Z 2018-02-13T21:18:28Z "i'm using boost 1.65.1 for a project in which the new beast framework v124 is used as an internal webserver. building using gcc on linux and gcc-mingw targeting win32 works in this setup. today, i've tried upgrade to boost 1.66, skipping the need for the external beast v124 source. still, gcc+linux build works, but my gcc-mingw build fails with alot of errors about the use of futures in asio. attached is a stripped output of the errors. " Martin Kjær Jørgensen 13350 build error non_blocking_io asio Boost 1.66.0 To Be Determined Bugs chris_kohlhoff new 2017-12-19T10:11:08Z 2017-12-19T10:11:08Z "build error, no find boost::asio::socket_base::non_blocking_io error C2039: “non_blocking_io”: 不是“boost::asio::socket_base”的成员" iewj 13349 sregex not thread-safe when copied xpressive Boost 1.64.0 To Be Determined Bugs Eric Niebler new 2017-12-18T15:44:34Z 2017-12-18T15:44:34Z "The following code does fail about every other execution: {{{ #!c++ #include #include #include using namespace std; using namespace boost::xpressive; struct MyRegexContainer { boost::xpressive::sregex myPatterns[20]; MyRegexContainer() { myPatterns[0] = sregex::compile(""[-]?[0-9]+\\.[0-9]{2}""); for (int i =0; i < 20; i++) { myPatterns[i] = myPatterns[0]; } } void match(const std::string& wert, int index) const { if(!regex_match(wert, myPatterns[index])){ cout << ""Index "" << index << "" did not match value "" << wert << endl; } } }; namespace { void testSREGEXMultithreadedTASK() { static const MyRegexContainer a; for (int i = 0; i < 10000; ++i) { a.match(""33.00"", i%20); a.match(""1.11"", i%20); } } } int main() { #ifdef BOOST_DISABLE_THREADS cout << ""BOOST_DISABLE_THREADS == TRUE"" << wert << endl; #endif boost::thread_group tgroup; for (int i = 0; i < 100; ++i) { tgroup.create_thread(boost::bind(&testSREGEXMultithreadedTASK)); } tgroup.join_all(); return 0; } }}}" wave@… 13346 SFINAE-friendly range_value range Boost 1.62.0 To Be Determined Feature Requests Neil Groves new 2017-12-17T19:53:47Z 2017-12-17T19:53:47Z "This code compiles: {{{ #include #include #include template void f(std::pair){} template auto f(T) -> typename std::iterator_traits::type>::value_type {} int main(){ std::pair p; f(p); } }}} However, if I change the return type to the more readable `typename boost::range_value::type`, it now fails to compile because the broken typedef in iterator_value is not in the immediate context. The standard noticed that this was useful and made iterator_traits SFINAE-friendly, it would be nice if boost could do the same for the various range meta-functions." marc.glisse@… 13345 Possible misses of comma operator array Boost 1.65.0 To Be Determined Bugs Marshall Clow new 2017-12-17T14:08:58Z 2018-05-10T19:56:17Z "When compiling my project with boost 1.65.1 i got the warning: ""Possible misses of comma operator here"" for a few files. Please use brackets to avoid the warning. file/linenumber array.hpp/186 feed_args.hpp/56 os_file_functions.hpp/546 macOS: 10.13.2 Xcode: 9.2 (9C40b)" dev@… 13342 Support out-of-tree builds Building Boost Boost 1.63.0 To Be Determined Bugs new 2017-12-14T10:46:55Z 2017-12-14T10:46:55Z "Currently when you run `./boostrap.sh` it builds b2 in the source tree. There doesn't seem to be any way to change this. If possible it would be nice to support fully out-of-source trees so that you can do a build without modifying the source tree at all. One way to do this would be to switch from b2 to CMake (two birds etc)." tdhutt@… 13340 ptr_vector::c_array is not compiling when boost::nullable is used. ptr_container Boost 1.62.0 To Be Determined Bugs Thorsten Ottosen new 2017-12-14T10:15:13Z 2017-12-14T10:15:13Z "Hi, Using c_array() when nullable is in interface, triggers compile error. Fallowing code is not compiling. {{{ boost::ptr_vector> p; p.c_array(); //compile error }}} It looks like inside c_array reinterpret_cast should to {{{value_type*}}} not {{{T**}}}. {{{ T** res = reinterpret_cast( &this->begin().base()[0] ); }}} " przemek.wos@… 13339 boost::filesystem segfaults under simple use... filesystem Boost 1.65.0 To Be Determined Bugs Beman Dawes new 2017-12-14T00:58:54Z 2017-12-14T00:58:54Z "Centos - 7 3.10.0-693.el7.x86_64 devtools-6 installed (g++ 6.3.1) Attempted using Boost 1_65_1 Failed Segfault Attempted using Boost 1_54_0 Passed Simple program... Statically linked after building boost. #include #include int main() { boost::filesystem::path path(""/tmp""); if ( boost::filesystem::exists( path ) ) { // std::cout << ""TEST""; // } else { // std::cout << ""TEST2""; } return 0; } Segfaults on the ""boost::filesystem::exists""" Robert H Whitcher 13338 checked_delete问题 utility Boost 1.65.0 To Be Determined Bugs No-Maintainer new 2017-12-13T08:50:05Z 2017-12-13T08:50:05Z "环境: Visual studio 2017 boost库编译选项: msvc141,multi,win64,debug,shared demo工程设置: debug, win32 问题源: 《Beyond the C++ STL: an introduction to boost》书上Part I, Library 3, checked_delete章节 如果把 deleter.h, deleter.cpp, to_be_deleted.h三个文件内容整合到一个文件里, 编译后会提示 "" warning C4150: 删除指向不完整“to_be_deleted”类型的指针;没有调用析构函数"" 运行后调用 deleter::do_it 时会间接调用到 ~to_be_deleted()。 调用 deleter::delete_it 时则不会间接调用到 ~to_be_deleted()。 最后调用完 ~to_be_deleted()程序结束时才报一个异常错误。 很奇怪的地方啊!看来是编译器工作方式的不同导致的吧。。。 code like this: // deleter.h class to_be_deleted; class deleter { public: void delete_it(to_be_deleted* p); void do_it(to_be_deleted* p); }; // deleter.cpp //#include ""deleter.h"" #include ""boost/checked_delete.hpp"" void deleter::delete_it(to_be_deleted* p) { delete p; } void deleter::do_it(to_be_deleted* p) { boost::checked_delete(p); // typedef char type_must_be_complete[sizeof(T)]; 所有代码放入一个文件,这句居然能编译通过?? } // to_be_deleted.h #include class to_be_deleted { public: ~to_be_deleted() { std::cout << ""I'd like to say important things here, please.""; } }; // Test application //#include ""deleter.h"" //#include ""to_be_deleted.h"" int main() { to_be_deleted* p = new to_be_deleted; deleter d; d.delete_it(p); d.do_it(p); } " linzhongzi@… 13337 io_service::stop() behavior on MSVC contradicts documentation asio Boost 1.63.0 To Be Determined Bugs chris_kohlhoff new 2017-12-12T11:10:01Z 2017-12-12T11:10:39Z "The io_service::stop() documentation says: > [...] All invocations of this run() or run_one() member functions should return as soon as possible [...] This is the behavior observed on GCC but not on MSVC. Reproducer code: {{{ #!cpp #include #include #include using namespace std::chrono_literals; int main() { boost::asio::io_service s; s.post([] { std::this_thread::sleep_for(5ms); std::cout << ""1\n""; }); s.post([] { std::this_thread::sleep_for(5ms); std::cout << ""2\n""; }); s.post([] { std::this_thread::sleep_for(5ms); std::cout << ""3\n""; }); std::thread th([&] { s.run(); }); std::this_thread::sleep_for(1ms); s.stop(); th.join(); } }}} This prints ""1"" on [https://wandbox.org/permlink/N02wy78yFGX1eJRl GCC] but ""1 2 3"" on [http://rextester.com/FHNW43260 MSVC] This bug was concretized by an Stack Overflow user while he investigated #13317. See [https://stackoverflow.com/a/47733861/4999407 his answer] for more information." Diego Barrios Romero 13336 vs2013 build my project with so many boost header errors mpl Boost 1.65.0 To Be Determined Bugs Aleksey Gurtovoy new 2017-12-12T09:39:16Z 2018-05-10T11:10:56Z "错误 1809 error C2628: “boost::mpl::intunsigned”后面接“char”是非法的(是否忘记了“;”?) D:\MediaService\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 43 1 libccm_cppbase.a 错误 1810 error C2226: 语法错误 : 意外的“boost::mpl::intunsigned”类型 D:\MediaService\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 44 1 libccm_cppbase.a 错误 1811 error C2143: 语法错误 : 缺少“;”(在“{”的前面) D:\MediaService\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 44 1 libccm_cppbase.a 错误 1812 error C2447: “{”: 缺少函数标题(是否是老式的形式表?) D:\MediaService\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 44 1 libccm_cppbase.a 错误 1813 error C2039: “intunsigned”: 不是“boost::mpl”的成员 D:\MediaService\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 85 1 libccm_cppbase.a 错误 1814 error C2144: 语法错误:“char”的前面应有“;” D:\MediaService\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 85 1 libccm_cppbase.a 错误 1816 error C2143: 语法错误 : 缺少“;”(在“<”的前面) D:\MediaService\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 85 1 libccm_cppbase.a 错误 1817 error C2988: 不可识别的模板声明/定义 D:\MediaService\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 85 1 libccm_cppbase.a 错误 1818 error C2059: 语法错误:“<” D:\MediaService\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 85 1 libccm_cppbase.a 错误 1819 error C2039: “value”: 不是“`global namespace'”的成员 D:\MediaService\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 85 1 libccm_cppbase.a 错误 1820 error C2143: 语法错误 : 缺少“;”(在“}”的前面) D:\MediaService\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 88 1 libccm_cppbase.a 错误 1821 error C2143: 语法错误 : 缺少“;”(在“:”的前面) D:\MediaService\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 88 1 libccm_cppbase.a 错误 1822 error C2334: “:”的前面有意外标记;跳过明显的函数体 D:\MediaService\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 88 1 libccm_cppbase.a 错误 1823 error C2039: “type_info”: 不是“boost::typeindex::stl_type_index”的成员 D:\MediaService\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 116 1 libccm_cppbase.a 错误 1824 error C2059: 语法错误:“return” D:\MediaService\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 117 1 libccm_cppbase.a 错误 1825 error C2238: 意外的标记位于“;”之前 D:\MediaService\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 117 1 libccm_cppbase.a 错误 1826 error C2628: “boost::typeindex::stl_type_index”后面接“char”是非法的(是否忘记了“;”?) D:\MediaService\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 121 1 libccm_cppbase.a 错误 1827 error C2039: “raw_name”: 不是“boost::typeindex::stl_type_index”的成员 D:\MediaService\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 121 1 libccm_cppbase.a 错误 1828 error C2270: “raw_name”: 非成员函数上不允许修饰符 D:\MediaService\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 121 1 libccm_cppbase.a 错误 1829 error C2065: “data_”: 未声明的标识符 D:\MediaService\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 123 1 libccm_cppbase.a 错误 1830 error C2509: “name”: 成员函数没有在“boost::typeindex::stl_type_index”中声明 D:\MediaService\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 129 1 libccm_cppbase.a 错误 1831 error C1903: 无法从以前的错误中恢复;正在停止编译 D:\MediaService\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 129 1 libccm_cppbase.a 错误 2732 error C2628: “boost::mpl::intunsigned”后面接“char”是非法的(是否忘记了“;”?) D:\MediaService\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 43 1 libccm_cppbase.a 错误 2733 error C2226: 语法错误 : 意外的“boost::mpl::intunsigned”类型 D:\MediaService\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 44 1 libccm_cppbase.a 错误 2734 error C2143: 语法错误 : 缺少“;”(在“{”的前面) D:\MediaService\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 44 1 libccm_cppbase.a 错误 2735 error C2447: “{”: 缺少函数标题(是否是老式的形式表?) D:\MediaService\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 44 1 libccm_cppbase.a 错误 2736 error C2039: “intunsigned”: 不是“boost::mpl”的成员 D:\MediaService\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 85 1 libccm_cppbase.a 错误 2737 error C2144: 语法错误:“char”的前面应有“;” D:\MediaService\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 85 1 libccm_cppbase.a 错误 2739 error C2143: 语法错误 : 缺少“;”(在“<”的前面) D:\MediaService\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 85 1 libccm_cppbase.a 错误 2740 error C2988: 不可识别的模板声明/定义 D:\MediaService\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 85 1 libccm_cppbase.a 错误 2741 error C2059: 语法错误:“<” D:\MediaService\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 85 1 libccm_cppbase.a 错误 2742 error C2039: “value”: 不是“`global namespace'”的成员 D:\MediaService\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 85 1 libccm_cppbase.a 错误 2743 error C2143: 语法错误 : 缺少“;”(在“}”的前面) D:\MediaService\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 88 1 libccm_cppbase.a 错误 2744 error C2143: 语法错误 : 缺少“;”(在“:”的前面) D:\MediaService\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 88 1 libccm_cppbase.a 错误 2745 error C2334: “:”的前面有意外标记;跳过明显的函数体 D:\MediaService\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 88 1 libccm_cppbase.a 错误 2746 error C2039: “type_info”: 不是“boost::typeindex::stl_type_index”的成员 D:\MediaService\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 116 1 libccm_cppbase.a 错误 2747 error C2059: 语法错误:“return” D:\MediaService\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 117 1 libccm_cppbase.a 错误 2748 error C2238: 意外的标记位于“;”之前 D:\MediaService\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 117 1 libccm_cppbase.a 错误 2749 error C2628: “boost::typeindex::stl_type_index”后面接“char”是非法的(是否忘记了“;”?) D:\MediaService\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 121 1 libccm_cppbase.a 错误 2750 error C2039: “raw_name”: 不是“boost::typeindex::stl_type_index”的成员 D:\MediaService\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 121 1 libccm_cppbase.a 错误 2751 error C2270: “raw_name”: 非成员函数上不允许修饰符 D:\MediaService\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 121 1 libccm_cppbase.a 错误 2752 error C2065: “data_”: 未声明的标识符 D:\MediaService\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 123 1 libccm_cppbase.a 错误 2753 error C2509: “name”: 成员函数没有在“boost::typeindex::stl_type_index”中声明 D:\MediaService\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 129 1 libccm_cppbase.a 错误 2754 error C1903: 无法从以前的错误中恢复;正在停止编译 D:\MediaService\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 129 1 libccm_cppbase.a " anonymous 13335 When using unix domain socket (boost::asio::local::stream_protocol), synchronous write may not respond sometimes on macOS asio Boost 1.65.0 To Be Determined Bugs chris_kohlhoff new 2017-12-11T06:48:39Z 2017-12-11T06:48:39Z "In very intermittent situations, synchronous write does not wake up in the following situations: 1. The server application uses a unix domain socket and accepts and reads asynchronously. 2. The client application uses a unix domain socket, and there is a thread that performs synchronous write repeatedly. Disconnect and reconnect at any time. There is no issue when checking on Windows / Mac with tcp socket. UDS (boost::asio::local::stream_protocol) has issue when checking on Mac. When testing with boost library 1.62.0 and 1.65.0 in macOS 10.12 environment, I confirmed that an issue occurred. The source code of the function with no response is as follows. {{{ int poll_write (socket_type s, state_type state, boost :: system :: error_code & ec) {   if (s == invalid_socket)   {     ec = boost :: asio :: error :: bad_descriptor;     return socket_error_retval;   } #if defined (BOOST_ASIO_WINDOWS) \   || defined (__ CYGWIN__) \   || defined (__ SYMBIAN32__) ... #else // defined (BOOST_ASIO_WINDOWS)       // || defined (__ CYGWIN__)       // || defined (__ SYMBIAN32__)   pollfd fds;   fds.fd = s;   FDS.Events = POLLOUT;   FDS.revents = 0;   int timeout = (state & user_set_non_blocking)? 0: -1;   clear_last_error ();   int result = error_wrapper (:: poll (& fds, 1, timeout), ec); //!!! ::poll is not wakeup even if socket cancelled and closed #endif // defined (BOOST_ASIO_WINDOWS)        // || defined (__ CYGWIN__)        // || defined (__ SYMBIAN32__) ... } }}} Attached test project. (xcode 8.3 project) The following settings should be changed as appropriate. * Modify the ""Link Binary With Libraries"" of ""Build Phases"" as appropriate for both server / client projects. * Modify the ""Header Search Paths"" and ""Library Search Path"" of the Build Settings as appropriate for both server / client projects. I do not speak English well so I used Google translation. Therefore, the contents may be awkward. I hope you understand. And, I hope this issue is resolved. ''Note. I used the compiled library. Compilation builds version 1.65.0 using the ofxOSXBoost (on GitHub) script (build-libc ++ withBitcode).''" seungrye@… 13334 MSVC ARM64 Building Boost Boost 1.65.0 To Be Determined Feature Requests new 2017-12-08T19:16:56Z 2017-12-08T19:16:56Z "Visual Studio 2017 recently gained support for the ARM64 architecture (/MACHINE:ARM64), which has desktop, phone and store APIs. It would be nice if this were supported as a target." Simon Richter 13333 Child processes started with boost::process have incorrect argv if executable path contains spaces process Boost 1.65.0 To Be Determined Bugs new 2017-12-08T16:54:21Z 2018-03-04T19:24:18Z "If an executable to start has spaces in its path, the process started with either boost::process::child or boost::process::system will have a strange argv. Specifically, the segments of the executable's path will be individual elements in the argv array. To demonstrate this problem, the following program dumps argv: {{{ #include int main(int argc, char* argv[]) { // Dump the command line arguments. std::cout << argc << std::endl; for (int i = 0; i < argc; ++i) std::cout << argv[i] << std::endl; return 0; } }}} Compile this and place the resulting DumpCmdLine.exe in ""c:\dir with space\"" and ""c:\dirwithoutspace\"". The following program runs this executable using boost::process, and demonstrates the problem: {{{ #include ""stdafx.h"" #include #include int main() { boost::filesystem::path toRun{ ""c:\\dir with space\\DumpCmdLine.exe"" }; auto child = boost::process::child(toRun, L""realArgument""); child.wait(); return 0; } }}} The child process argv contains 4 elements, ""c:\dir"", ""with"", ""space\DumpCmdLine.exe"", and ""realArgument"". When there is no space in the executable path, the child process argv contains 2 elements: ""c:\dirwithoutspace\DumpCmdLine.exe"", and ""realArgument"". When DumpCmdLine.exe is called from the command line, it receives the same 2 arguments. The command line I used is: {{{ ""c:\dir with space\DumpCmdLine.exe"" realArgument }}} This was observed on a Windows 10 system, 64 bit build both debug and release configurations. Visual Studio 2017 (15.4.3) was used to build." Jonathan Jaloszynski 13332 Boost 1.65.1 seems to be missing boost graph fixes from 1.64 graph Boost 1.65.0 To Be Determined Bugs Jeremiah Willcock new 2017-12-08T11:02:48Z 2018-05-10T14:17:11Z "I am getting compile errors using VS2017 in boost 1.65.1 boost\graph\named_function_params.hpp {{{ template inline const typename lookup_named_param_def::type& get_param(const Args& p, Tag) { return lookup_named_param_def::get(p, param_not_found()); } }}} This was fixed in 1.64 apparently. #if _MSC_VER >=1900 #pragma warning( push ) #pragma warning( disable : 4172 ) #endif template inline const typename lookup_named_param_def::type& get_param(const Args& p, Tag) { return lookup_named_param_def::get(p, param_not_found()); } #if _MSC_VER >= 1900 #pragma warning( pop ) #endif I found another example of this: {{{ explicit two_bit_color_map(std::size_t n, const IndexMap& index = IndexMap()) : n(n), index(index), data(new unsigned char[(n + elements_per_char - 1) / elements_per_char]) { // Fill to white std::fill(data.get(), data.get() + (n + elements_per_char - 1) / elements_per_char, 0); } }}} in this case the int 0 being passed to std::fill needs to be casted to a char to compile. Also fixed in 1.64. Has something gone wrong here in the 1.65.1 release?" jckooijman@… 13330 IMM架构输入法的ime中引入filesystem模块,导致xp上无法加载ime filesystem Boost 1.62.0 To Be Determined Bugs Beman Dawes new 2017-12-07T10:35:24Z 2017-12-07T10:35:24Z "在输入法工程中引入filesystem模块(#include ),导致生成的ime在xp上加载失败。 开发IDE环境: vs2015 14.0.25431.01 update3 编译工程的平台工具集:v140_xp 运行库:/MTd 输出文件类型:dll VERSION:VFT_DRV VFT2_DRV_INPUTMETHOD 运行环境: windowsXP sp3" 376098946@… 13329 BOOST_ASIO_ENABLE_CANCELIO must be globally defined asio Boost 1.63.0 To Be Determined Bugs chris_kohlhoff new 2017-12-06T19:23:40Z 2017-12-06T19:23:40Z "Today I spent several hours debugging a problem, that was caused by `#define BOOST_ASIO_ENABLE_CANCELIO` I added this #define only in those source files, where I had compiler warnings about cancel() failing on windows XP. This resulted in async_connect() failing. The problem was in boost::Casio::Detail::win_iocp_socket_service::async_accept(): {{{ #!C++ start_accept_op(impl, peer.is_open(), p.p->new_socket(), impl.protocol_.family(), impl.protocol_.type(), impl.protocol_.protocol(), p.p->output_buffer(), p.p->address_length(), p.p); }}} When I inspected the value if impl.protocol_.family_, the correct value was shown in the debugger. But when I stepped into impl.protocol_.family(), an incorrect value was shown. I found out, that in impl.protocol_.family(), the member family_ had a different address, then in the calling method async_accept(). This seems to be caused by the following code in boost::asio::detail::win_iocp_socket_service_base: {{{ #!C++ #if defined(BOOST_ASIO_ENABLE_CANCELIO) // The ID of the thread from which it is safe to cancel asynchronous // operations. 0 means no asynchronous operations have been started yet. // ~0 means asynchronous operations have been started from more than one // thread, and cancellation is not supported for the socket. DWORD safe_cancellation_thread_id_; #endif // defined(BOOST_ASIO_ENABLE_CANCELIO) }}} This makes the size of this class (and therefore the offsets of all member variables of derived classes depend on wether BOOST_ASIO_ENABLE_CANCELIO is defined or not. This only works, if BOOST_ASIO_ENABLE_CANCELIO is either defined or not in **all** sources, #include'ing boost/asio.hpp. If it is only #define'ed in those source files, where the compiler emits the warning about cancel() failing on windows XP, this problem may occur. I was not able to find any hint about this fact in the documentation of boost asio. I would just unconditionally declare the member variable safe_cancellation_thread_id_. I am no sure, whether this might trigger compiler warnings about an unused or uninitialized variable, but it should be possible to suppress these warnings. " Mario Klebsch 13328 "transitive_reduction.hpp in the Graph component contains two lines that use ""not"" instead of ""!""" graph Boost 1.65.0 To Be Determined Bugs Jeremiah Willcock new 2017-12-06T13:48:33Z 2017-12-06T13:48:33Z "Lines 108 and 110 of graph/transitive_reduction.hpp (current as of Boost 1.65.1) include expressions represent logical negation via the word ""not"" rather than the correct ""!"". As expected, this causes a compilation error. None of the other Graph template/header files have this issue, as far as I could tell, so I don't believe it's simply failing to include a header that sets ""#define not !"". Currently, in order to use transitive_reduction.hpp, one must define that macro in their source file before including the header, and that should not be necessary. The simple solution, of course, is to change ""not"" to ""!"" in those two locations. The altered lines read as follows: 108: if( ! edge_in_closure[i][j] ) { 110: if( ! edge_in_closure[i][k] ) { " cjfred01@… 13327 Issue with boost::property_tree::ptree inside lambda with a capture using Visual Studio 2017 property_tree Boost 1.63.0 To Be Determined Bugs Sebastian Redl new 2017-12-06T10:11:34Z 2017-12-06T10:11:34Z "We are running into an issue with Boost 1.56.0, in boost::property_tree:: ptree, when using it inside lambda function with a capture using Visual Studio 2017. I get the following errors from line 4 and line 6 when compiling the attached file. boost\include\boost-1_56\boost\property_tree\detail\ptree_implementation.hpp(252): error C2440: '': cannot convert from 'boost::multi_index::detail::bidir_node_iterator>' to 'boost::property_tree::basic_ptree>::const_iterator' with [ Super=boost::multi_index::detail::ordered_index_node>>,std::allocator>>>>> ] and [ Key=std::string ] boost\include\boost-1_56\boost\property_tree\detail\ptree_implementation.hpp(252): note: No constructor could take the source type, or constructor overload resolution was ambiguous note: see reference to function template instantiation 'boost::property_tree::basic_ptree>::const_iterator boost::property_tree::basic_ptree>::begin(void) const' being compiled with [ Key=std::string ] The workaround that we have is to use auto instead of the actual types for the const_iterator returned from begin(). See attached cpp file." shubham.srivastava@… 13326 linking with program_options has unresolved symbols on MSVC program_options Boost 1.65.0 To Be Determined Bugs Vladimir Prus new 2017-12-06T09:59:32Z 2018-07-07T11:57:52Z "I'm developing a simple command line client application against boost::program_options. Everything works fine on Linux with gcc-4.8, gcc-5.3 and gcc-6.3, on Darwin with XCode 7 and on Windows with MinGW-w64. But on Windows with MSVC Build Tools 2017 x64 I get two unresolved symbols: {{{ LightBISClientCMDLine.cc.obj : error LNK2001: unresolved external symbol ""class std::basic_string,class std::allocator > boost::program_options::arg"" (?arg@program_options@boost@@3V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@A) LightBISClientCMDLine.cc.obj : error LNK2001: unresolved external symbol ""public: static unsigned int const boost::program_options::options_description::m_default_line_length"" (?m_default_line_length@options_description@program_options@boost@@2IB) }}} I checked program_options.dll and I am under the impression that those two symbols are defined there. I get exact matches for {{{?arg@program_options@boost@@3V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@A}}} and {{{?m_default_line_length@options_description@program_options@boost@@2IB}}}. Also all other symbols from program_options are resolved correctly. Here is the details build log with a verbose linker message: http://data.biodataanalysis.de/tmp/boost_program_options_linker_error_emmenlau.txt I am explictily setting preprocessor defines for debug, and I set to code to build for C++14. Is that possibly related?" Mario Emmenlauer 13325 "boost::numeric::odeint::dense_output_runge_kutta call a non-existign function ""resize""" odeint Boost 1.65.0 To Be Determined Bugs karsten new 2017-12-05T00:25:46Z 2017-12-05T00:25:46Z "I failed the compile of the following code. {{{ #!div style=""font-size: 80%"" source: {{{#!c++ #include #include int main(void) { namespace odeint = boost::numeric::odeint; using state_type = std::vector; auto Stepper = odeint::make_dense_output(0.001, 0.001, odeint::runge_kutta_dopri5()); state_type State{ 1.0,1.0 }; Stepper.adjust_size(State); return 0; } }}} }}} {{{ #!div style=""font-size: 80%"" output: {{{#!c++ error C2039: 'resize': 'boost::numeric::odeint::runge_kutta_dopri5::algebra_type,boost::numeric::odeint::operations_dispatcher_sfinae::operations_type,boost::numeric::odeint::initially_resizer>' is not a member. }}} }}} This seems to be caused because odeint::dense_output_runge_kutta calls a non-existing function ""resize"" instead of ""adjust_size"" of the base stepper. {{{ #!div style=""font-size: 80%"" boost/numeric/odeint/stepper/dense_output_runge_kutta.hpp {{{#!c++ //boost/numeric/odeint/stepper/dense_output_runge_kutta.hpp //Line 378-383 template< class StateType > void adjust_size( const StateType &x ) { resize( x ); m_stepper.stepper().resize( x ); //not resize but adjust_size? } }}} }}} " Koichi 13324 not able to link the path to some files of boost library like boost::interprocess::detail has not been declared interprocess Boost 1.53.0 To Be Determined Bugs Ion Gaztañaga new 2017-12-04T22:45:50Z 2017-12-04T22:45:50Z " Hi, I keep getting Error boost::interprocess::detail has not been declared in cent7 on Boost 1.53, code works in 1.41 version of boost - cent6. Have boost-devel installed already to avoid include and linker flags and other dependencies. " kartikay1110@… 13323 Passing a vector of arguments to boost::process (boost::fusion) process Boost 1.65.0 To Be Determined Bugs new 2017-12-04T14:57:30Z 2018-05-10T11:09:26Z "I'm trying to create a `boost::process` from a vector of string arguments: {{{ void runProcess( const std::string& exe, const std::vector& args ) { bp::ipstream out; bp::child c(exe, args, std_out > out); ... } }}} This apparently works, but I'm getting the following warning with Visual Studio 2015: > warning C4503: 'boost::fusion::detail::for_each_linear': decorated name length exceeded, name was truncated It diseappears if passing arguments one by one `bp::child c(exe, ""param1"", ""param2"", std_out > out);`. " jpo38 13322 boost::process reports ERROR_INVALID_HANDLE instead of ERROR_FILE_NOT_FOUND when program cannot be found process Boost 1.65.0 To Be Determined Bugs new 2017-12-04T11:33:58Z 2018-05-10T11:09:08Z "Under Windows, the following program outputs ""Error is 6"" (6 means ERROR_INVALID_HANDLE), while it should report ""Error is 2"" (2 means ERROR_FILE_NOT_FOUND). {{{ #include #include int main( int argc, char* argv[] ) { try { boost::process::child p( ""foo"" ); p.terminate(); } catch ( boost::process::process_error err ) { std::cout << ""Error is "" << err.code().value(); } return 0; } }}}" jpo38 13321 boost::process: executable extension is required to create a process. filesystem Boost 1.65.0 To Be Determined Bugs Beman Dawes new 2017-12-04T11:29:49Z 2017-12-05T07:15:06Z "The following code does not assert under Windows: {{{ int main( int argc, char* argv[] ) { try { boost::process::child p( ""cmd"" ); p.terminate(); } catch (...) { assert( false ); } try { boost::process::child p( ""cmd.exe"" ); p.terminate(); } catch (...) { assert( false ); } return 0; } }}} So, apparently, .exe does not need to be specified. However, the following code does assert when .exe is not specified: {{{ int main( int argc, char* argv[] ) { if ( argc == 1 ) { std::string exe = argv[0]; try { std::string exeNoExt = exe.substr(0, exe.find_last_of(""."")); boost::process::child p( exeNoExt, ""foo"" ); p.terminate(); } catch (...) { assert( false ); // asserts } try { boost::process::child p( exe, ""foo"" ); p.terminate(); } catch (...) { assert( false ); // does not assert } } }}} boost::process::child p( exeNoExt, ""foo"" ); should work and executable extention should be silently added, like it is for cmd. Note that boost::process::search_path( ""myprg"" ) returns ""myprg.exe"" if found, so here, extension is added correctly. But it's unsafe to systematically call this function priori to creating a child as it only works with program names (calling it with ""Myfolder/myprg"" returns """")." jpo38 13320 It would be nice if boost::process could provide an API to get all running processes process Boost 1.65.0 To Be Determined Feature Requests new 2017-12-04T11:21:21Z 2018-05-10T11:08:38Z "There is no Xplatform API to get all running processes, it would be noce to have one. Possible implementation: {{{ typedef struct ProcessDescr { /** \brief Constructor * \param _sModuleName program's name * \param _pid program's PID */ ProcessDescr( const std::string& _sModuleName, int _pid ) : sModuleName( _sModuleName ), pid( _pid ) { } /** \brief program's name */ std::string sModuleName; /** \brief program's PID */ int pid; } ProcessDescr; /** \brief List of processus descriptions */ typedef std::vector ProcessList; #if defined(BOOST_WINDOWS_API) void addProcessDescr( ProcessList& processes, DWORD processID ) { TCHAR szProcessName[MAX_PATH] = TEXT(""""); // Get a handle to the process. HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processID ); // Get the process name. if (NULL != hProcess ) { HMODULE hMod; DWORD cbNeeded; if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod), &cbNeeded) ) { GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName)/sizeof(TCHAR) ); } } // Print the process name and identifier. processes.push_back( ProcessDescr( szProcessName, processID ) ); // Release the handle to the process. CloseHandle( hProcess ); } #endif void GetAllProcesses( ProcessList& processes ) { #if defined(BOOST_POSIX_API) #ifdef SDE_MOBILE #ifdef SDE_ANDROID DIR *d = opendir(""/proc""); if ( d != NULL ) { struct dirent * de; while((de = readdir(d)) != 0){ int pid = -1; // to be tested!!! if(isdigit(de->d_name[0])){ pid = atoi(de->d_name); } processes.push_back( ProcessDescr( de->d_name , pid ) ); } closedir(d); } #else assert( false ); #warning Unsupported platform #endif #else struct task_struct *task; for_each_process(task) { processes.push_back( ProcessDescr( task->comm , task->pid ) ); } #endif #elif defined(BOOST_WINDOWS_API) DWORD aProcesses[1024], cbNeeded, cProcesses; unsigned int i; if ( EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) ) { // Calculate how many process identifiers were returned. cProcesses = cbNeeded / sizeof(DWORD); // Print the name and process identifier for each process. for ( i = 0; i < cProcesses; i++ ) { if( aProcesses[i] != 0 ) { addProcessDescr( processes, aProcesses[i] ); } } } #else #error Unknown platform #endif } }}}" jpo38 13319 Boost.Asio.SSL write_some cause 'decryption failed or bad record mac' on large (~1MB) transmissions asio Boost 1.65.0 To Be Determined Bugs chris_kohlhoff new 2017-12-04T09:38:35Z 2017-12-04T09:38:35Z "When we send large amount of data (1MB) using boost::asio::ssl::stream the boost closes the connection after some transmission and reports encryption error : 'decryption failed or bad record mac'. The reason of it is a write_some function. Shortly it uses boost::asio::write to send encrypted data to TCP socket (boost_1_57_0\boost\asio\ssl\detail\io.hpp:60, see details below), but the amount of really sent data is ignored. Instead of it, the amount of handled by OpenSSL user application buffer is returned to the user application. In case of 'would block' operation the amount of really sent data is less than reported to user application. Details: If the socket is unblocking, the write_some has to try to send something over the socket and has to return the amount of the data it is able to send. The application has to retry next time for the rest of the output data, taking in account the amount of just sent data. The SSL implementation uses paired BIO of OpenSSL to allow sending encrypted data not directly to a TCP socket but in a memory buffers. The Boost uses this buffers to integrate SSL in its engine implementing asynchronous socket operation. In other words, boost internally works with TCP sockets using its mechanisms of direct or asynchronous data operation getting data from OpenSSL buffer. For the write operation the sequence is the following: 1. User application calls boost::asio::ssl::stream::write_some operation and gives it the buffer with initial data. 2. This operation calls the engine detail::io function. This function has to encrypt data using OpenSSL, read the encrypted data from the coupled OpenSSL BIO buffer and then send it out using TCP socket. 3. First the engine io function calls the detail::write_op. This operation (in subroutines) calls the ::SSL_write. This function uses a BIO buffer to store encrypted data and returns the amount of handled initial data. The current buffer size is 17KB. In case of large outgoing message, the size will be about 16+KB. 4. The size of the handled initial data is stored to bytes_transfered and then is used as a return value of sent amount to the user application. 5. After this operation the SSL_get_error returns what OpenSSL wants – send the encrypted data through real socket or read raw data from the socket. 6. In our case normally the Open SSL just want to send the portion of encrypted data. 7. The detail::io execute the case engine::want_output:. It calls boost::asio::write(next_layer, core.engine_.get_output(core.output_buffer_), ec); 8. This function read the encrypted data from OpenSSL buffer and transmit it using usual boost write operation. 9. The problem is that the return of this function is not checked. The amount of the send data by this function can be less than required (16KB). But the user application is notified that that write_some function have sent 16+K. 10. This leads to the unsynchronized state of SSL on both sides. The sender consider it sends +16KB, but receiver has gotten say only 4KB. Other data are lost. 11. The user application makes next send skipping the 16KB. And after some send operation OpenSSL recognize the error state. It reports the error and boost closes the socket. 12. The reason of why write operation can send not the entire encrypted portion (16KB) is the following: a. It tries sending the full buffer, but in case of large data stream the corresponding socket can get stacked, and the output buffer can overflow. b. In this case the socket operation has the following options i. Block in send operation in case of blocking socked ii. Return “would block” error in case of nonblocking socket. c. In our case we have nonblocking socket and write operation stops execution in this case and returns the amount of really sent data. But this value is just ignored. Workaround: don't use write_some with ssl. " Andrey Borisov 13318 key_of_value now changes the type in the priority comparison for intrusive::treap_set intrusive Boost 1.65.0 To Be Determined Bugs Ion Gaztañaga new 2017-12-04T08:03:30Z 2017-12-04T23:55:03Z "Setting the `key_of_value` option now changes the type used in the priority comparison, which makes it impossible to use `key_of_value` when the priority is entirely separate to the primary key. The example below uses a comparison functor; a similar problem occurs with `priority_compare(T const&, T const&)` function. This worked in 1.59, fails to compile in 1.65.1. {{{ #include using namespace boost::intrusive; struct Test : public bs_set_base_hook<> { Test(int k, int p) : m_key(k), m_priority(p) {} int m_key; int m_priority; }; struct TestKey { using type = int; int const& operator()(Test const& t) const { return t.m_key; } }; struct PriorityCompare { bool operator()(Test const& t1, Test const& t2) const { return t1.m_priority < t2.m_priority; } }; using Container = treap_set, priority>; int main() { Test t1(1, 2); Container c; c.insert(t1); } }}} " Jan Martin Mikkelsen 13317 io_service behaviour difference between ubuntu and msvc-14 asio Boost 1.62.0 To Be Determined Bugs chris_kohlhoff new 2017-12-01T16:54:35Z 2017-12-12T11:14:07Z "When implementing a basic thread pool using boost::asio::io_service, I am observing some differences in how queued tasks are handled when stopping the io_service. On MSVC 14 (MS Visual Studio 2015), for some reason the queued tasks which were not started yet are not dropped when stopping the io_service but are run nonetheless. These tasks are dropped when running this on Ubuntu 16.04 (GCC 5.4.0). I have simplified and cleaned up the original tests and put them in a single file (attached) which only depends on boost and uses some sleeps to demonstrate the problem. You can build it with the CMakeLists.txt attached if you wish. The output on Ubuntu is as expected: {{{ checkAllWorkIsProcessedBeforeDestruction passed. passed. passed. checkWorkCanBeCancelled passed. passed. passed. checkWorkCanBeInterrupted passed. passed. passed. checkUninterruptableWorkIsNotInterruptedButCanBeDropped passed. passed. passed. passed. }}} This is the output on MSVC 14: {{{ checkAllWorkIsProcessedBeforeDestruction passed. passed. passed. checkWorkCanBeCancelled Error: functor 1 call expected: false current: true Error: functor 2 call expected: false current: true Error: running time expected: 150 current: 402 checkWorkCanBeInterrupted passed. passed. passed. checkUninterruptableWorkIsNotInterruptedButCanBeDropped passed. Error: functor 2 call expected: false current: true passed. Error: running time expected: 250 current: 404 }}} Am I doing something wrong?" Diego Barrios Romero 13314 warning in graph/transitive_closure.hpp graph Boost 1.63.0 To Be Determined Bugs Jeremiah Willcock new 2017-11-28T13:46:17Z 2018-05-10T11:08:17Z "line 92 of graph/include/boost/graph/transitive_closure.hpp int num_scc = strong_components(g, component_number, vertex_index_map(index_map)); should be size_type num_scc = strong_components(g, component_number, vertex_index_map(index_map)); otherwise there is a warning in case of size_t used in EdgeProperties" o.tristan@… 13313 Problem when mixing repeat with epsilon parser spirit Boost 1.65.0 To Be Determined Bugs Joel de Guzman new 2017-11-28T02:46:24Z 2017-12-05T18:36:38Z "Mixing lazy repeats with epsilon parser (with action) is not working as expected. The attributes are not synthesized as expected. The following example fails: {{{ std::string s; size_t c = 0; BOOST_TEST(test_attr(""aaaaaaaa"", repeat(val(8))[char_ >> eps[ref(c)++]], s) && s == ""aaaaaaaa"" && c == 8); }}} It failed because ''s'' is empty (which I don't think it should) I have made some variation of the same operations (no actions, no lazy operations) and they all works except for this particular case. See the complete example that I have made from the repeat.cpp test (only the last test fails): {{{ { using boost::spirit::qi::eps; using boost::phoenix::val; using boost::phoenix::ref; std::string s; size_t c = 0; s.clear(); BOOST_TEST(test_attr(""aaaaaaaa"", repeat[char_ >> eps], s) && s == ""aaaaaaaa""); s.clear(); BOOST_TEST(test_attr(""aaaaaaaa"", repeat(8)[char_ >> eps], s) && s == ""aaaaaaaa""); s.clear(); BOOST_TEST(test_attr(""aaaaaaaa"", repeat(val(8))[char_ >> eps], s) && s == ""aaaaaaaa""); s.clear(); c = 0; BOOST_TEST(test_attr(""aaaaaaaa"", repeat[char_ >> eps[ref(c)++]], s) && s == ""aaaaaaaa"" && c == 8); s.clear(); c = 0; BOOST_TEST(test_attr(""aaaaaaaa"", repeat(8)[char_ >> eps[ref(c)++]], s) && s == ""aaaaaaaa"" && c == 8); s.clear(); c = 0; BOOST_TEST(test_attr(""aaaaaaaa"", repeat(val(8))[char_ >> eps[ref(c)++]], s) && s == ""aaaaaaaa"" && c == 8); } }}} " Sebastien Matte 13312 boost::locale::conv and secure memory buffers locale Boost 1.63.0 To Be Determined Feature Requests Artyom Beilis new 2017-11-27T15:07:09Z 2017-11-27T15:07:09Z "Sometimes it is useful to convert passwords from one encoding to another to guess the right encoding (for example to import certificates which have been exported with broken software). For such (and maybe other cases) it would be nice if from_utf and to_utf had an option to specify the output memory buffer. I guess this would be best done via a template specialization. I realize that this is a somewhat obscure concern. The benefit of trying to keep a password in secure memory is discussed even among experts. There are many other places higher (pipes, keyboard buffers) and lower (cpu caches) in the stack where password traces can remain. On the other hand, scanning the swap space for key material and passwords in the clear is a basic security check. For me, this is something that should be fixed if it is easy to do. Right now, I am using this pattern, which at best relies on RVO and leaves a small race: {{{ std::string convertedpw_ = boost::locale::conv::from_utf(password, charset); Botan::secure_vector convertedpw(convertedpw_.size()); memcpy(convertedpw.data(), convertedpw_.data(), convertedpw_.size()); /* Best effort. */ Botan::secure_scrub_memory((void *)convertedpw_.data(), convertedpw_.size()); }}} Anyway, thanks a lot for a great library!" Marcus Brinkmann 13310 "boost::filesystem::exists(""."") fails on Mac OS Sierra" filesystem Boost 1.65.0 To Be Determined Bugs Beman Dawes new 2017-11-23T21:42:10Z 2017-11-23T22:29:33Z "I installed Boost 1.65.1 on Mac OS Sierra 10.12.6 using mac port. When I run the program tut1.cpp from the Boost Filesystem tutorial, the program fails to find files and directories that exist. The following simple test code returns 1 on linux and 0 on Mac OS: #include #include int main() { // This line should print 1 but it prints 0 on Mac OS std::cout << boost::filesystem::exists(""."") << std::endl; return 0; }" anonymous 13309 function_address_holder::get_module/::get implementations are not thread-safe interprocess Boost 1.63.0 To Be Determined Bugs Ion Gaztañaga new 2017-11-22T22:33:11Z 2017-11-22T22:36:40Z "The discussion in the git review https://github.com/boostorg/filesystem/pull/59#discussion_r152524074 showed that the implementations of `function_address_holder::get_module` and `function_address_holder::get` are not completely atomic, because the loop conditions {{{ for(unsigned i = 0; ModuleStates[id] < 2; ++i){ }}} and {{{ for(unsigned i = 0; FunctionStates[id] < 2; ++i){ }}} are not using a read barrier for the variables `ModuleStates[id]` and `FunctionStates[id]`. It seems that proper thread-safety using interlocked operations could be realized by emulating an interlocked read-acquire operation via the `BOOST_INTERLOCKED_COMPARE_EXCHANGE(&N, 0, 0)` idiom. I can make a concrete pull request if agreement exists on the approach" Daniel Krügler 13308 Asio symbols are exported even when they should not asio Boost 1.64.0 To Be Determined Bugs chris_kohlhoff new 2017-11-22T09:36:26Z 2017-11-22T09:36:26Z "Since the changeset 382804a4325b0e3b90d07f6563f5c6fd13a38052 (Use default visibility everywhere), the asio symbols are always exported on macOS even with visibility=hidden. I.e. contary what the changeset comment says. Not only it gives a bigger footprint (see ticket #12722), but it also has functional impliciations on macOS: When multiple modules export the same symbol, the **macOS** somehow randomly determines which instance of the symbol will be used by which module that needs it. I.e. **when modules A and B export the same symbol, and module A needs to call it, then it can happen that the module A actually calls the symbol exported from B. Weird things begin to happen not only when A and B were built with different versions of boost.** In practice, we are hitting this issue with our **plugins** for Adobe Illustrator. Illustrator itself was built with boost of some (unknown) version which is probably different in different releases of Illustrator. Our plugins are built with boost 1.59, 1.61, 1.64 and we are getting almost identical issues with all of them: the macOS decides to link our plugins to the boost symbols exported by Adobe Illustrator although our plugins carry all the required functions. The symptoms are that our plugins hang because some boost functions are called inside our plugin and some inside Illustrator itself leading to inconstistent state, esp. when different boost versions are used. **The solution here is to really hide the boost asio symbols when building with visibility=hidden** which is the way we build our plugins. In the attachment you can find a solution for the issue: the symbol visibility of asio now really follows the default visibility." Jan Patera 13306 Bimap uses std::unary_function/std::binary_function which are removed in c++17 bimap Boost 1.65.0 To Be Determined Bugs Matias Capeletto new 2017-11-21T11:26:47Z 2017-11-21T11:26:47Z "Some code, which uses boost::bimap does not compile on Windows 10 with Visual Studio 2017 Professional using the compiler flag /std:c++latest (which enables the C++17 standard). This is due to std::unary_function (and similar templates) being removed in C++17. A number of structures in the underlying code of boost::bimap (e.g. bimaps::container_adaptor::detail::comparison_adaptor, bimaps::relation::support::data_extractor_implementation) derive from std::unary_function or std::binary_function." Andy Vincent 13305 memory leaks log Boost 1.65.0 To Be Determined Bugs Andrey Semashev new 2017-11-21T08:35:05Z 2017-11-21T08:35:05Z "I create a logger in the main thread. If the logger is called from another std::thread there are no problems, but if it's called from the concurrency::create_task - there are lot of memory leaks. Visual Studio 2015, Boost versions: 1.57 and 1.65.1. For example: {{{ Dumping objects -> {887} normal block at 0x00B6A0F8, 128 bytes long. Data: < TimeStamp: 2017> 00 54 69 6D 65 53 74 61 6D 70 3A 20 32 30 31 37 }}} Best regards, Victor. The sample code: {{{ // ConsoleApplication_wo_MFC.cpp : Defines the entry point for the console application. // #define _CRT_SECURE_NO_WARNINGS #define BOOST_SYSTEM_NO_DEPRECATED #define BOOST_LIB_DIAGNOSTIC #define CGAL_LIB_DIAGNOSTIC #include #include #include #include #include #define _CRTDBG_MAP_ALLOC #include #include #include #include #include #include #include #include #include #include #include #include #if !defined(BOOST_LOG_NO_THREADS) #include #include #endif // !defined(BOOST_LOG_NO_THREADS) using namespace std; namespace logging = boost::log; namespace src = boost::log::sources; namespace sinks = boost::log::sinks; namespace keywords = boost::log::keywords; namespace expr = boost::log::expressions; BOOST_LOG_ATTRIBUTE_KEYWORD(a_channel, ""Channel"", std::string) int main() { int nRetCode = 0; _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); typedef sinks::synchronous_sink file_sink; src::severity_channel_logger_mt logger(keywords::channel = ""L""); boost::shared_ptr sinkT(new file_sink(keywords::file_name = ""logs\\TestLogger_%6N.log"")); sinkT->set_formatter ( expr::stream << "" TimeStamp: "" << expr::format_date_time< boost::posix_time::ptime >(""TimeStamp"", ""%Y-%m-%d %H:%M:%S"") << "" ThreadID: "" << expr::attr(""ThreadID"") << "" Message: "" << expr::smessage ); logging::core::get()->add_sink(sinkT); sinkT->set_filter(a_channel == ""L""); logging::add_common_attributes(); BOOST_LOG(logger) << L""A message from the MAIN thread""; std::thread testTthread([&]() { BOOST_LOG(logger) << L""A message from the std::thread""; }); testTthread.join(); auto task = concurrency::create_task([&]() { // Produces memory leaks BOOST_LOG(logger) << L""A message from the concurrency::create_task thread""; }); task.wait(); BOOST_LOG(logger) << L""Is concurrency::create_task done: "" << task.is_done(); return nRetCode; } }}} " vgtinenko@… 13298 boost_1_65_1 Building Boost Boost 1.65.0 To Be Determined Bugs new 2017-11-16T15:22:51Z 2017-12-15T07:11:33Z "boost_1_65_1 does not build out of the box in MSVS2010. It fails to compile with about 20 errors starting in ""strings.c(195)..."" I will simply move to VS2015. I do not see how to upload bootstrap.log, but here are a few lines of it: strings.c(195) : error C2143: syntax error : missing ';' before 'type' strings.c(196) : error C2065: 'p' : undeclared identifier strings.c(196) : error C2065: 'p' : undeclared identifier strings.c(196) : warning C4047: '>=' : 'int' differs in levels of indirection from 'char *' " jaime.oliva@… 13297 Coroutine-Context linker error on Cygwin, but not on Linux context Boost 1.65.0 Boost 1.65.0 Bugs olli new 2017-11-15T10:59:19Z 2017-11-15T10:59:19Z "Hi, I'm attempting to port a inherited project from Linux to Cygwin on Windows. Even though I'm using Boost 1.65.1 on both systems (both compiled from source), I seem to get a Linker error on Cygwin, but not on Linux. The only difference I can see between my two system setups is the compiler: Cygwin runs g++ 6.4.0, x86_64-pc-cygwin. Linux runs g++ 6.3.0, x86_64-linux-gnu. Both compiled the boost library with the following commands: {{{ ./bootstrap.sh --prefix=compiled ./b2 cxxflags=""-std=c++11"" ./b2 install }}} I've reduced my project to only the troublesome code module, and scrapped as much as possible, you can find it attached to this ticket as well. Compiling is performed with: {{{ g++ -std=c++11 main.cpp -I/usr/local/include/ -L/usr/local/lib/ -lm -lboost_context -lboost_regex -lboost_coroutine -lboost_system -lboost_chrono -lboost_thread }}} The two latter libraries (chrono and thread), only seem to be necessary for the Linux-version. The output from above command on Linux is non-existent, since it succeeds. The output on Cygwin however informs me of a linker error: {{{ /tmp/ccOwuqNr.o:main.cpp:(.text$_ZN5boost11coroutines26detail14push_coroutineIvEC1IZN4TaskC4ERKSt8functionIFvvEEEUlRNS1_14pull_coroutineIvEEE_vEEOT_[_ZN5boost11coroutines26detail14push_coroutineIvEC1IZN4TaskC4ERKSt8functionIFvvEEEUlRNS1_14pull_coroutineIvEEE_vEEOT_]+0x11): undefined reference to `boost::context::stack_traits::default_size()' /tmp/ccOwuqNr.o:main.cpp:(.text$_ZN5boost11coroutines26detail14push_coroutineIvEC1IZN4TaskC4ERKSt8functionIFvvEEEUlRNS1_14pull_coroutineIvEEE_vEEOT_[_ZN5boost11coroutines26detail14push_coroutineIvEC1IZN4TaskC4ERKSt8functionIFvvEEEUlRNS1_14pull_coroutineIvEEE_vEEOT_]+0x11): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `boost::context::stack_traits::default_size()' collect2: error: ld returned 1 exit status }}} To me it seems that the linking between coroutine and context failed at some point. Since the error message is not entirely obvious as to what has gone wrong, I'm not sure if this is a bug within Cygwin or boost. Maybe it's not a bug at all, and I've just missed some configuration step for Cygwin. Any help investigating this would be appreciated!" lars@… 13296 The directory-separator indicating the root-directory incorrectly handled by lexically_normal on windows filesystem Boost 1.65.0 To Be Determined Bugs Beman Dawes new 2017-11-15T08:33:48Z 2017-11-15T08:33:48Z "According to the documentation the result for lexically_normal should contain backslashes on windows. This is not the case for the directory-separator representing the root-directory. Examples: {{{ cout << path(""/tmp/abc/def).lexically_normal() << endl; cout << path(""c:\\abc/def"").lexically_normal() << endl; }}} Output: {{{ /tmp\abc\def c:/abc\def }}} " peter@… 13295 Error during building boost build Boost 1.65.0 To Be Determined Bugs Vladimir Prus new 2017-11-15T03:04:11Z 2018-05-10T11:05:00Z "Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:\Users\varsha>cd C:\Users\varsha\Downloads\boost_1_65_1 C:\Users\varsha\Downloads\boost_1_65_1>bootstrap Building Boost.Build engine cl : Command line warning D9035 : option 'GZ' has been deprecated and will be re moved in a future release cl : Command line warning D9036 : use 'RTC1' instead of 'GZ' cl : Command line warning D9002 : ignoring unknown option '/MLd' Failed to build Boost.Build engine. Please consult bootstrap.log for further diagnostics. You can try to obtain a prebuilt binary from http://sf.net/project/showfiles.php?group_id=7586&package_id=72941 Also, you can file an issue at http://svn.boost.org Please attach bootstrap.log in that case. C:\Users\varsha\Downloads\boost_1_65_1> " anonymous 13294 Boost(1.57).Asio crashes after ssl stream is closed and stream is deleted. asio Boost 1.57.0 To Be Determined Bugs chris_kohlhoff new 2017-11-13T23:17:41Z 2017-11-13T23:17:41Z "The issue is found in boost asio v1.57 and is presents in 1.65.1. Windows, Visual Studio 2015 Our library uses boost asio ssl stream for secure TCP connection. We use dynamically created context and ssl stream: {{{#!cpp std::shared_ptr m_context; std::shared_ptr m_stream; ... m_context = std::make_shared(TM_NS_ASIO::ssl::context::tlsv12); m_stream = std::make_shared(*io_service, *m_context); }}} after handshake we start reading asynchronously: {{{#!cpp m_stream->async_read_some(buffer, readHandler); }}} After that we just close the connection and remove objects: {{{#!cpp m_stream->shutdown(ec); m_stream->lowest_layer().close(ec); }}} Than we destroy the stream and context: {{{#!cpp m_stream.reset(); m_context.reset(); }}} Close and destroy operation are performed in a context of io_service thread. And after the stream deletion the io_service gets the break assertion: {{{#!cpp > msvcp140d.dll!std::_Debug_message(const wchar_t * message, const wchar_t * file, unsigned int line) Line 17 C++ tls_test.exe!std::_Vector_const_iterator > >::operator*() Line 73 C++ tls_test.exe!std::_Vector_iterator > >::operator*() Line 332 C++ tls_test.exe!boost::asio::detail::buffer_debug_check > > >::operator()() Line 532 C++ tls_test.exe!std::_Invoker_functor::_Call > > > &>(boost::asio::detail::buffer_debug_check > > > & _Obj) Line 1377 C++ tls_test.exe!std::invoke > > > &>(boost::asio::detail::buffer_debug_check > > > & _Obj) Line 1443 C++ tls_test.exe!std::_Invoke_ret > > > &>(std::_Forced __formal, boost::asio::detail::buffer_debug_check > > > & <_Vals_0>) Line 1461 C++ tls_test.exe!std::_Func_impl > > >,std::allocator,void>::_Do_call() Line 212 C++ tls_test.exe!std::_Func_class::operator()() Line 279 C++ tls_test.exe!boost::asio::detail::buffer_cast_helper(const boost::asio::mutable_buffer & b) Line 146 C++ tls_test.exe!boost::asio::buffer_cast(const boost::asio::mutable_buffer & b) Line 427 C++ tls_test.exe!boost::asio::detail::buffer_sequence_adapter::validate(const boost::asio::mutable_buffers_1 & buffer_sequence) Line 207 C++ tls_test.exe!boost::asio::detail::win_iocp_socket_recv_op >,boost::asio::ssl::detail::read_op,std::function > >::do_complete(boost::asio::detail::win_iocp_io_service * owner, boost::asio::detail::win_iocp_operation * base, const boost::system::error_code & result_ec, unsigned int bytes_transferred) Line 72 C++ tls_test.exe!boost::asio::detail::win_iocp_operation::complete(boost::asio::detail::win_iocp_io_service & owner, const boost::system::error_code & ec, unsigned int bytes_transferred) Line 46 C++ tls_test.exe!boost::asio::detail::win_iocp_io_service::do_one(bool block, boost::system::error_code & ec) Line 409 C++ tls_test.exe!boost::asio::detail::win_iocp_io_service::run(boost::system::error_code & ec) Line 164 C++ tls_test.exe!boost::asio::io_service::run(boost::system::error_code & ec) Line 67 C++ }}} It occurs that completion operation is called after the stream and underlined socket was closed and deleted. The operation is a dynamically object, created by read_some, but it contains link to buffers that application set to it. In case of raw socket the buffers are user application buffers without checkers. In case of ssl the stream uses its internal buffer for TLS operations. And at the moment of the completion operation the stream and its buffers are not exist. " Andrey Borisov 13292 Using Boost.Asio's POSIX-specific features makes programs not compile asio Boost 1.63.0 To Be Determined Bugs chris_kohlhoff new 2017-11-12T15:58:57Z 2017-11-12T15:58:57Z "When using ASIO I get the following error message upon trying to compile on POSIX: {{{ In file included from /usr/include/boost/asio/basic_socket_iostream.hpp:24:0, from /usr/include/boost/asio.hpp:29, from boost_bug.cpp:1: /usr/include/boost/asio/basic_socket_streambuf.hpp: In instantiation of ‘boost::asio::basic_socket_streambuf* boost::asio::basic_socket_streambuf::connect(T ...) [with T = {const char*}; Protocol = boost::asio::local::stream_protocol; StreamSocketService = boost::asio::stream_socket_service; Time = boost::posix_time::ptime; TimeTraits = boost::asio::time_traits; TimerService = boost::asio::deadline_timer_service >]’: /usr/include/boost/asio/basic_socket_iostream.hpp:167:32: required from ‘boost::asio::basic_socket_iostream::basic_socket_iostream(T ...) [with T = {const char*}; Protocol = boost::asio::local::stream_protocol; StreamSocketService = boost::asio::stream_socket_service; Time = boost::posix_time::ptime; TimeTraits = boost::asio::time_traits; TimerService = boost::asio::deadline_timer_service >]’ boost_bug.cpp:4:74: required from here /usr/include/boost/asio/basic_socket_streambuf.hpp:204:41: error: no type named ‘resolver’ in ‘class boost::asio::local::stream_protocol’ typedef typename Protocol::resolver resolver_type; }}} The following is an example source file that reproduces the bug: {{{ #include int main() { boost::asio::local::stream_protocol::iostream stream(""/tmp/test_sock""); } }}} " arsenarsentmc@… 13291 read_until won't compile with Visual Studio 2017 using regex asio Boost 1.66.0 To Be Determined Bugs chris_kohlhoff new 2017-11-09T10:10:57Z 2018-05-02T10:58:16Z "Compiling following code will produce compiler error {{{ #include #include #include #include #include int main() { boost::asio::io_service ios; boost::asio::ip::tcp::socket s(ios); boost::asio::streambuf b; boost::system::error_code e; boost::asio::read_until(s, b, boost::regex(""i am just a regex""), e); } }}} {{{ 1>d:\source\boost\boost\asio\impl\read_until.hpp(273): error C2664: 'size_t boost::asio::basic_streambuf>::read_size_helper(boost::asio::basic_streambuf> &,::size_t)': cannot convert argument 1 from 'boost::asio::basic_streambuf_ref' to 'boost::asio::basic_streambuf> &' 1> with 1> [ 1> Allocator=std::allocator 1> ] 1>d:\source\boost\boost\asio\impl\read_until.hpp(404): note: see reference to function template instantiation 'size_t boost::asio::read_until>(SyncReadStream &,DynamicBuffer &&,const boost::regex &,boost::system::error_code &)' being compiled 1> with 1> [ 1> SyncReadStream=boost::asio::ip::tcp::socket, 1> Allocator=std::allocator, 1> DynamicBuffer=boost::asio::basic_streambuf_ref> 1> ] 1>c:\users\????\error.cpp(12): note: see reference to function template instantiation 'size_t boost::asio::read_until>(SyncReadStream &,boost::asio::basic_streambuf> &,const boost::regex &,boost::system::error_code &)' being compiled 1> with 1> [ 1> SyncReadStream=boost::asio::ip::tcp::socket 1> ] }}} This can be solved by using same calculation as other methods use {{{ // Need more data. std::size_t bytes_to_read = std::min( std::max(512, b.capacity() - b.size()), std::min(65536, b.max_size() - b.size())); }}} instead of {{{ std::size_t bytes_to_read = read_size_helper(b, 65536); }}} " Ville-Pekka Vahteala 13289 Generating default locale from envronment variables (LC_ALL, LANG) is in wrong order locale Boost 1.62.0 To Be Determined Bugs Artyom Beilis new 2017-11-06T13:47:43Z 2017-11-06T14:56:36Z "When generating locale with empty string, we infer the locale from the environment variables. The current order is 1. LC_CTYPE 2. LC_ALL 3. LANG As per POSIX, see chapter 8.2, and linux man-pages, see man locale.7 (can't post links, the system forbids) the order should be 1. LC_ALL 2. LC_CTYPE 3. LANG The fix is trivial in the function {{{boost::locale::util::get_system_locale()}}}" Dimitrij Mijoski 13287 Broken wchar EQUAL test Boost 1.65.0 To Be Determined Bugs Gennadiy Rozental new 2017-11-04T22:07:01Z 2017-11-04T22:07:01Z "boost: boost_1_65_1-msvc-14.1-32.exe Problem description: BOOST_REQUIRE_EQUAL does not work with unicode arguments on windows platform with official boost dlls. Namely does not 1) compile with std::wstring (see example 1 below) 2) link with wchar_t* (see example 2 below) arguments on windows platform with official boost dlls. Some analysis from my side. Could not test static libraries, as could not figure out how to link against official static libs. I was able to build static boost test lib manually as described at http://www.boost.org/doc/libs/1_65_1/libs/test/doc/html/boost_test/adv_scenarios/static_lib_customizations/entry_point.html. I.e. b2 --with-test link=static define=BOOST_TEST_NO_MAIN define=BOOST_TEST_ALTERNATIVE_INIT_API and make BOOST_REQUIRE_EQUAL to accept wchar_t. See example 3 below. Unfortunately example 3 did not compile with official binaries (?!) boost::test_tools::tt_detail::equal_impl(wchar_t const *,wchar_t const *) is lost in dlls, but available in static lib. In boost_1_54_0-msvc-11.0-32.exe however, equal_impl(wchar_t const *,wchar_t const *) is available in boost_unit_test_framework-vc110-1_54.dll. --- Example 1 --- {{{ #include #include #include #define BOOST_TEST_MODULE test_module_name #define BOOST_TEST_DYN_LINK #define BOOST_TEST_NO_MAIN #include BOOST_AUTO_TEST_SUITE( boost_my_test ); BOOST_AUTO_TEST_CASE(boost_my_test_1) { std::wstring v1(L""a""); std::wstring v2(L""a""); BOOST_REQUIRE_EQUAL(v1, v2); } BOOST_AUTO_TEST_SUITE_END(); int main(int argc, char* argv[], char* envp[]) { return boost::unit_test::unit_test_main( &init_unit_test, argc, argv ); } }}} Error: {{{ D:\LIBS\boost\boost-1_65_1\boost/test/tools/detail/print_helper.hpp(52): error C2338: Type has to implement operator<< to be printable D:\LIBS\boost\boost-1_65_1\boost/test/tools/detail/print_helper.hpp(61): note: see reference to function template instantiation 'std::ostream &boost::test_tools::tt_detail::impl::boost_test_print_type(std::ostream &,const T &)' being compiled with [ R=std::wstring, T=std::wstring ] }}} --- Example 2 --- {{{ #include #include #include #define BOOST_TEST_MODULE test_module_name #define BOOST_TEST_DYN_LINK #define BOOST_TEST_NO_MAIN #include BOOST_AUTO_TEST_SUITE( boost_my_test ); BOOST_AUTO_TEST_CASE(boost_my_test_1) { const wchar_t* v1 = L""a""; const wchar_t* v2 = L""a""; BOOST_REQUIRE_EQUAL(v1, v2); } BOOST_AUTO_TEST_SUITE_END(); int main(int argc, char* argv[], char* envp[]) { return boost::unit_test::unit_test_main( &init_unit_test, argc, argv ); } }}} Error: {{{ error LNK2001: unresolved external symbol ""__declspec(dllimport) class boost::test_tools::assertion_result __cdecl boost::test_tools::tt_detail::equal_impl(wchar_t const *,wchar_t const *)"" (__imp_?equal_impl@tt_detail@test_tools@boost@@YA?AVassertion_result@23@PB_W0@Z) }}} -- Example 3 -- {{{ #include #include #include #define BOOST_TEST_MODULE test_module_name #define BOOST_TEST_NO_MAIN #define BOOST_TEST_ALTERNATIVE_INIT_API #include BOOST_AUTO_TEST_SUITE( boost_my_test ); BOOST_AUTO_TEST_CASE(boost_my_test_1) { const wchar_t* v1 = L""a""; const wchar_t* v2 = L""a""; BOOST_REQUIRE_EQUAL(v1, v2); } BOOST_AUTO_TEST_SUITE_END(); int main(int argc, char* argv[], char* envp[]) { return boost::unit_test::unit_test_main(init_unit_test, argc, argv); } }}}" stier08@… 13286 warning C4141: 'dllexport': used more than once serialization Boost 1.65.0 To Be Determined Bugs Robert Ramey new 2017-11-04T21:03:18Z 2018-04-30T20:39:47Z "The following warnings are emitted by Visual Studio 2017 when using boost/serialization as a shared library (and defining BOOST_ALL_DYN_LINK when using the library): {{{ C:\...\boost\include\boost-1_65_1\boost/archive/codecvt_null.hpp(68): warning C4141: 'dllexport': used more than once C:\...\boost\include\boost-1_65_1\boost/archive/codecvt_null.hpp(78): warning C4141: 'dllexport': used more than once C:\...\boost\include\boost-1_65_1\boost/serialization/singleton.hpp(94): warning C4141: 'dllexport': used more than once }}} The problem is use of BOOST_*_DECL and BOOST_DLLEXPORT at the same time. Removing the BOOST_DLLEXPORT macro from those lines as done in the following patch fixes the problem. {{{ diff --git a/boost/include/boost-1_65_1/boost/archive/codecvt_null.hpp b/boost/include/boost-1_65_1/boost/archive/codecvt_null.hpp index 7bce2b9b..332ae9f9 100644 --- a/boost/include/boost-1_65_1/boost/archive/codecvt_null.hpp +++ b/boost/include/boost-1_65_1/boost/archive/codecvt_null.hpp @@ -65,7 +65,7 @@ public: template<> class BOOST_SYMBOL_VISIBLE codecvt_null : public std::codecvt { - virtual BOOST_WARCHIVE_DECL BOOST_DLLEXPORT std::codecvt_base::result + virtual BOOST_WARCHIVE_DECL std::codecvt_base::result do_out( std::mbstate_t & state, const wchar_t * first1, @@ -75,7 +75,7 @@ class BOOST_SYMBOL_VISIBLE codecvt_null : public std::codecvtstore(code); ^ /code/core/source/cpp/private/libs/SensorInterface/Velodyne/tests/PacketDecoderTest.cc:96:13: note: Calling constructor for 'child' bp::child call_script(bp::search_path(""bash""), get_res_script); ^ /usr/local/boost-1.64.0/include/boost/process/child.hpp:35:13: note: Calling 'execute_impl' : child(::boost::process::detail::execute_impl(std::forward(args)...)) {} ^ /usr/local/boost-1.64.0/include/boost/process/detail/execute_impl.hpp:275:12: note: Calling 'basic_execute_impl' return basic_execute_impl( ^ /usr/local/boost-1.64.0/include/boost/process/detail/execute_impl.hpp:267:12: note: Calling 'executor::operator()' return exec(); ^ /usr/local/boost-1.64.0/include/boost/process/detail/posix/executor.hpp:312:16: note: Calling 'executor::invoke' return invoke(has_ignore_error(), shall_use_vfork()); ^ /usr/local/boost-1.64.0/include/boost/process/detail/posix/executor.hpp:371:9: note: Assuming the condition is false if (::pipe(p) == -1) ^ /usr/local/boost-1.64.0/include/boost/process/detail/posix/executor.hpp:371:5: note: Taking false branch if (::pipe(p) == -1) ^ /usr/local/boost-1.64.0/include/boost/process/detail/posix/executor.hpp:376:9: note: Assuming the condition is false if (::fcntl(p[1], F_SETFD, FD_CLOEXEC) == -1) ^ /usr/local/boost-1.64.0/include/boost/process/detail/posix/executor.hpp:376:5: note: Taking false branch if (::fcntl(p[1], F_SETFD, FD_CLOEXEC) == -1) ^ /usr/local/boost-1.64.0/include/boost/process/detail/posix/executor.hpp:384:5: note: Taking false branch if (_ec) ^ /usr/local/boost-1.64.0/include/boost/process/detail/posix/executor.hpp:391:9: note: Assuming the condition is false if (pid == -1) ^ /usr/local/boost-1.64.0/include/boost/process/detail/posix/executor.hpp:391:5: note: Taking false branch if (pid == -1) ^ /usr/local/boost-1.64.0/include/boost/process/detail/posix/executor.hpp:400:14: note: Assuming the condition is false else if (pid == 0) ^ /usr/local/boost-1.64.0/include/boost/process/detail/posix/executor.hpp:400:10: note: Taking false branch else if (pid == 0) ^ /usr/local/boost-1.64.0/include/boost/process/detail/posix/executor.hpp:428:5: note: Taking true branch if (_ec) ^ /usr/local/boost-1.64.0/include/boost/process/detail/posix/executor.hpp:431:22: note: Calling '~child' return child(); ^ /usr/local/boost-1.64.0/include/boost/process/detail/child_decl.hpp:93:13: note: Left side of '&&' is true if (_attached && !_exited() && running(ec)) ^ /usr/local/boost-1.64.0/include/boost/process/detail/child_decl.hpp:93:13: note: Left side of '&&' is true /usr/local/boost-1.64.0/include/boost/process/detail/child_decl.hpp:93:40: note: Calling 'child::running' if (_attached && !_exited() && running(ec)) ^ /usr/local/boost-1.64.0/include/boost/process/detail/child_decl.hpp:164:13: note: Left side of '&&' is true if (valid() && !_exited()) ^ /usr/local/boost-1.64.0/include/boost/process/detail/child_decl.hpp:164:9: note: Taking true branch if (valid() && !_exited()) ^ /usr/local/boost-1.64.0/include/boost/process/detail/child_decl.hpp:166:13: note: 'code' declared without an initial value int code; ^ /usr/local/boost-1.64.0/include/boost/process/detail/child_decl.hpp:167:24: note: Calling 'is_running' auto res = boost::process::detail::api::is_running(_child_handle, code, ec); ^ /usr/local/boost-1.64.0/include/boost/process/detail/posix/is_running.hpp:47:9: note: Assuming the condition is true if (ret == -1) ^ /usr/local/boost-1.64.0/include/boost/process/detail/posix/is_running.hpp:47:5: note: Taking true branch if (ret == -1) ^ /usr/local/boost-1.64.0/include/boost/process/detail/posix/is_running.hpp:49:13: note: Assuming the condition is false if (errno != ECHILD) //because it no child is running, than this one isn't either, obviously. ^ /usr/include/x86_64-linux-gnu/bits/errno.h:54:18: note: expanded from macro 'errno' # define errno (*__errno_location ()) ^ /usr/local/boost-1.64.0/include/boost/process/detail/posix/is_running.hpp:49:9: note: Taking false branch if (errno != ECHILD) //because it no child is running, than this one isn't either, obviously. ^ /usr/local/boost-1.64.0/include/boost/process/detail/child_decl.hpp:167:24: note: Returning from 'is_running' auto res = boost::process::detail::api::is_running(_child_handle, code, ec); ^ /usr/local/boost-1.64.0/include/boost/process/detail/child_decl.hpp:168:17: note: Left side of '&&' is true if (!res && !_exited()) ^ /usr/local/boost-1.64.0/include/boost/process/detail/child_decl.hpp:168:13: note: Taking true branch if (!res && !_exited()) ^ /usr/local/boost-1.64.0/include/boost/process/detail/child_decl.hpp:169:17: note: 1st function call argument is an uninitialized value _exit_status->store(code); ^ " Evgeny Televitckiy 13282 Allocator compilation problems with gcc 4.8.1 container Boost 1.64.0 To Be Determined Bugs Ion Gaztañaga new 2017-10-31T18:08:27Z 2017-10-31T18:08:27Z "Hello all, thanks for providing this great software. Just a remark, when I tried to use the allocators with gcc 4.8.x it fails during the instantiation. {{{ #include #include #include int foo() { using myset= std::set, boost::container::allocator>; myset test_set; return 1; } }}} fails with {{{ In file included from /opt/compiler-explorer/gcc-4.8.5/include/c++/4.8.5/set:60:0, from :1: /opt/compiler-explorer/gcc-4.8.5/include/c++/4.8.5/bits/stl_tree.h: In instantiation of 'void std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_destroy_node(std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_Link_type) [with _Key = int; _Val = int; _KeyOfValue = std::_Identity; _Compare = std::less; _Alloc = boost::container::allocator; std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_Link_type = std::_Rb_tree_node*]': /opt/compiler-explorer/gcc-4.8.5/include/c++/4.8.5/bits/stl_tree.h:1127:23: required from 'void std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_erase(std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_Link_type) [with _Key = int; _Val = int; _KeyOfValue = std::_Identity; _Compare = std::less; _Alloc = boost::container::allocator; std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_Link_type = std::_Rb_tree_node*]' /opt/compiler-explorer/gcc-4.8.5/include/c++/4.8.5/bits/stl_tree.h:671:28: required from 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::~_Rb_tree() [with _Key = int; _Val = int; _KeyOfValue = std::_Identity; _Compare = std::less; _Alloc = boost::container::allocator]' /opt/compiler-explorer/gcc-4.8.5/include/c++/4.8.5/bits/stl_set.h:90:11: required from here /opt/compiler-explorer/gcc-4.8.5/include/c++/4.8.5/bits/stl_tree.h:421:2: error: 'std::_Rb_tree, std::less, boost::container::allocator >::_Node_allocator' has no member named 'destroy' _M_get_Node_allocator().destroy(__p); ^ Compiler exited with result code 1 }}}" apmanol@… 13281 How to build with NDK Building Boost Boost 1.65.0 To Be Determined Support Requests new 2017-10-30T19:52:23Z 2017-10-30T19:52:23Z "Hi, I use to VS2017 for Cross platform c++. NDK version rb13. Visual stuido start build use to arm-linux-androideabi-gcc.exe but Boost build start not use arm-linux-androideabi-gcc.exe.boost is how use to arm-linux-androideabi-gcc.exe" salih.yucel@… 13278 interprocess_sharable_mutex::unlock_sharable() bug when counter is already equal to 0 interprocess Boost 1.66.0 To Be Determined Patches Ion Gaztañaga new 2017-10-27T16:10:32Z 2017-10-27T16:10:32Z The patch provided fixes a bug on interprocess sharable mutex. The sharable counter is wrap around when unlock_sharable function is called and counter is already equal to 0. arnaud.gody@… 13277 State explicitly in the docs that Boost.Containers don't allocate in the default constructor container Boost 1.66.0 To Be Determined Feature Requests Ion Gaztañaga new 2017-10-27T08:14:15Z 2017-10-27T08:14:15Z The docs are not explicit about this, so I believe it would be an improvement to clarify this explicitly stating that Boost.Containers don't allocate in the default constructor. dariomt@… 13276 circular_buffer pulls in exception handling code circular_buffer Boost 1.65.0 To Be Determined Bugs Jan Gaspar new 2017-10-26T19:08:26Z 2017-10-26T19:11:29Z "`circular_buffer` as shipped doesn't work for embedded applications - it ends up adding EH (and thus `printf`, etc.), which adds unacceptable bloat for devices without much flash. The problem is that, even if you create a non-throwing allocator, `circular_buffer::allocate(size_type n)` still first checks `n` against the allocator's `max_size()`, and throws if it is too large. As I understand it, an allocator should throw/assert anyway (depending on whether it's using EH or not) if you try to `allocate()` more than `max_size()`, so I've been patching by deleting the involved lines: {{{ - if (n > max_size()) - throw_exception(std::length_error(""circular_buffer"")); }}} These lines should at least get excluded from compilation, or replaced with an assert, if `BOOST_NOEXCEPT` is defined." anonymous 13275 flat_map's allocator_type constructor could potentially produce invalid output in optimization container Boost 1.65.0 To Be Determined Bugs Ion Gaztañaga new 2017-10-25T19:49:59Z 2017-10-27T11:18:19Z "In class flat_map, we have constructor: {{{ BOOST_CONTAINER_FORCEINLINE explicit flat_map(const allocator_type& a) : m_flat_tree(container_detail::force(a)) {} }}} This could cause a problem. Impl_allocator_type is {{{ typedef typename impl_tree_t::allocator_type impl_allocator_type; }}} And impl_tree_t is {{{ typedef container_detail::flat_tree< container_detail::pair, container_detail::select1st, Compare, typename allocator_traits::template portable_rebind_alloc >::type> impl_tree_t; }}} container_detail::force() is doing an reinterpret_cast essentially. Let's say argument a is {{{ allocator< std::pair > }}} Then if we are calling that constructor, we are actually reinterpret_cast argument 'a' from {{{ allocator< std::pair > }}} to {{{ allocator< container_detail::pair > }}} While the program could run fine in no-opt because **std::pair** and** container_detail::pair** could be very similar and swappable, the program could produce invalid result when compiler turn on optimization. Compiler would find no alias information between **allocator>** and **allocator>**, and think they are not related and move things around to produce invalid result. " jasonliu.development@… 13274 boost.filesystem compile problem on Android filesystem Boost 1.65.0 To Be Determined Bugs Beman Dawes new 2017-10-25T08:48:40Z 2018-03-01T20:46:10Z "Hello, in attempt to build boost for android with more or less reasonable strict settings (-Werror) I uncovered some bugs which I cannot report on github because these projects have Issues disabled. {{{ /usr/local/opt/android-ndk/android-ndk-r16-beta1//sources/android/support/include/stdio.h:36:25: error: invalid token at start of a p reprocessor expression #if __USE_FILE_OFFSET64 && __ANDROID_API__ < __ANDROID_API_N__ }}} This happens because filesystem defines a ""harmless"" macro: {{{ libs/filesystem/src/operations.cpp:18:9: warning: '__USE_FILE_OFFSET64' macro redefined [-Wmacro-redefined] #define __USE_FILE_OFFSET64 // but that is harmless on Windows and on POSIX ^ }}} While this check was {{{#if defined(__USE_FILE_OFFSET64)}}} in previous android versions, it seems to have changed when they introduced unified headers. It's probably more ""harmless"" to define an integer value in boost.filesystem rather than persuade Google to fix their code." Berkus 13273 boost.program_options compile problems on Android program_options Boost 1.65.0 To Be Determined Bugs Vladimir Prus new 2017-10-25T08:44:11Z 2017-10-25T12:56:44Z "Hello, in attempt to build boost for android with more or less reasonable strict settings (-Werror) I uncovered some bugs which I cannot report on github because these projects have Issues disabled. {{{ clang-darwin.compile.c++ android-build/boost/bin.v2/ libs/program_options/build/clang-darwin-5.0~x86/debug/ address-model-32/link-stati c/target-os-android/threading-multi/cmdline.o libs/program_options/src/cmdline.cpp:104:41: error: declaration shadows a field of 'boost::program_options::detail::cmdline' [-Werror ,-Wshadow] cmdline::init(const vector& args) ^ ./boost/program_options/detail/cmdline.hpp:139:34: note: previous declaration is here std::vector args; ^ libs/program_options/src/cmdline.cpp:508:48: error: declaration shadows a field of 'boost::program_options::detail::cmdline' [-Werror ,-Wshadow] cmdline::parse_long_option(vector& args) ^ ./boost/program_options/detail/cmdline.hpp:139:34: note: previous declaration is here std::vector args; ^ libs/program_options/src/cmdline.cpp:545:49: error: declaration shadows a field of 'boost::program_options::detail::cmdline' [-Werror,-Wshadow] cmdline::parse_short_option(vector& args) ^ ./boost/program_options/detail/cmdline.hpp:139:34: note: previous declaration is here std::vector args; ^ libs/program_options/src/cmdline.cpp:611:47: error: declaration shadows a field of 'boost::program_options::detail::cmdline' [-Werror,-Wshadow] cmdline::parse_dos_option(vector& args) ^ ./boost/program_options/detail/cmdline.hpp:139:34: note: previous declaration is here std::vector args; ^ libs/program_options/src/cmdline.cpp:632:58: error: declaration shadows a field of 'boost::program_options::detail::cmdline' [-Werror,-Wshadow] cmdline::parse_disguised_long_option(vector& args) ^ ./boost/program_options/detail/cmdline.hpp:139:34: note: previous declaration is here std::vector args; ^ libs/program_options/src/cmdline.cpp:663:47: error: declaration shadows a field of 'boost::program_options::detail::cmdline' [-Werror,-Wshadow] cmdline::parse_terminator(vector& args) ^ ./boost/program_options/detail/cmdline.hpp:139:34: note: previous declaration is here std::vector args; ^ libs/program_options/src/cmdline.cpp:683:55: error: declaration shadows a field of 'boost::program_options::detail::cmdline' [-Werror,-Wshadow] cmdline::handle_additional_parser(vector& args) ^ ./boost/program_options/detail/cmdline.hpp:139:34: note: previous declaration is here std::vector args; ^ 7 errors generated. ""/usr/local/opt/android-ndk/android-ndk-r16-beta1// toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++"" ""-DBOOST_AC_USE_PTHREADS"" ""-DBOOST_SP_USE_PTHREADS"" ""-fvisibility=hidden"" ""-fvisibility-inlines-hidden"" ""-Wno-unused-local-typedef"" -x c++ -std=c++14 -O0 -g -O0 -fno-inline -Wall -g --target=i686-none-linux-android --gcc-toolchain=/usr/local/opt/android-ndk/android-ndk- r16-beta1//toolchains/x86-4.9/prebuilt/darwin-x86_64 --sysroot=/usr/local/opt/android-ndk/android-ndk-r16-beta1//sysroot -isystem /usr/local/opt/android-ndk/android-ndk-r16-beta1// sources/cxx-stl/llvm-libc++/include -isystem /usr/local/opt/android-ndk/ android-ndk-r16-beta1//sources/cxx-stl/llvm-libc++abi/include -isystem /usr/local/opt/android-ndk/android-ndk-r16-beta1//sources/android/support/include -isystem /usr/local/opt/android-ndk/android-ndk-r16-beta1//sysroot/usr/include -isystem /usr/local/opt/android-ndk/android-ndk-r16-beta1// sysroot/usr/include/i686-linux-android -DANDROID -D__ANDROID_API__=21 -ffunction-sections -funwind-tables -fstack-protector-strong -fno-limit-debug-info -fPIC -no-canonical-prefixes -mstackrealign -Wa,--noexecstack -Wformat -Werror=format-security -Wall -Werror -Wshadow -march=i686 -DBOOST_ALL_NO_LIB=1 -D_LITTLE_ENDIAN -I""."" -c -o ""android-build/boost/bin.v2/libs/program_options/build/ clang-darwin-5.0~x86/debug/address-model-32/link-static/ target-os-android/threading-multi/cmdline.o"" ""libs/program_options/src/ cmdline.cpp"" }}}" Berkus 13272 boost.serialization compile problem on Android serialization Boost 1.65.0 To Be Determined Bugs Robert Ramey new 2017-10-25T08:42:43Z 2017-10-25T12:58:00Z "Hello, in attempt to build boost for android with more or less reasonable strict settings (-Werror) I uncovered some bugs which I cannot report on github because these projects have Issues disabled. {{{ clang-darwin.compile.c++ android-build/boost/bin.v2/ libs/serialization/build/clang-darwin-5.0~x86/debug/ address-model-32/link-static/target-os-android/threading- multi/polymorphic_iarchive.o In file included from libs/serialization/src/polymorphic_iarchive.cpp:20: In file included from ./boost/archive/polymorphic_iarchive.hpp:32: ./boost/archive/detail/iserializer.hpp:69:7: error: macro expansion producing 'defined' has undefined behavior [-Werror,-Wexpansion-to-defined] #if ! DONT_USE_HAS_NEW_OPERATOR ^ ./boost/archive/detail/iserializer.hpp:63:12: note: expanded from macro 'DONT_USE_HAS_NEW_OPERATOR' || defined(__SUNPRO_CC) && (__SUNPRO_CC < 0x590) \ ^ ./boost/archive/detail/iserializer.hpp:212:9: error: macro expansion producing 'defined' has undefined behavior [-Werror,-Wexpansion-to-defined] #if DONT_USE_HAS_NEW_OPERATOR ^ ./boost/archive/detail/iserializer.hpp:63:12: note: expanded from macro 'DONT_USE_HAS_NEW_OPERATOR' || defined(__SUNPRO_CC) && (__SUNPRO_CC < 0x590) \ ^ 2 errors generated. ""/usr/local/opt/android-ndk/android-ndk-r16-beta1// toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++"" ""-DBOOST_AC_USE_PTHREADS"" ""-DBOOST_SP_USE_PTHREADS"" ""-fvisibility=hidden"" ""-fvisibility-inlines-hidden"" ""-Wno-unused-local-typedef"" -x c++ -ftemplate-depth-255 -fvisibility=hidden -fvisibility-inlines-hidden -std=c++14 -O0 -g -O0 -fno-inline -Wall -g --target=i686-none-linux-android --gcc-toolchain=/usr/local/opt/android-ndk/android-ndk- r16-beta1//toolchains/x86-4.9/prebuilt/darwin-x86_64 --sysroot=/usr/local/opt/android-ndk/android-ndk-r16-beta1//sysroot -isystem /usr/local/opt/android-ndk/android-ndk-r16-beta1// sources/cxx-stl/llvm-libc++/include -isystem /usr/local/opt/android-ndk/ android-ndk-r16-beta1//sources/cxx-stl/llvm-libc++abi/include -isystem /usr/local/opt/android-ndk/android-ndk-r16-beta1//sources/android/support/include -isystem /usr/local/opt/android-ndk/android-ndk-r16-beta1//sysroot/usr/include -isystem /usr/local/opt/android-ndk/android-ndk-r16-beta1// sysroot/usr/include/i686-linux-android -DANDROID -D__ANDROID_API__=21 -ffunction-sections -funwind-tables -fstack-protector-strong -fno-limit-debug-info -fPIC -no-canonical-prefixes -mstackrealign -Wa,--noexecstack -Wformat -Werror=format-security -Wall -Werror -Wshadow -march=i686 -DBOOST_ALL_NO_LIB=1 -D_LITTLE_ENDIAN -I""."" -c -o ""android-build/boost/bin.v2/libs/serialization/build/ clang-darwin-5.0~x86/debug/address-model-32/link-static/ target-os-android/threading-multi/polymorphic_iarchive.o"" ""libs/serialization/src/polymorphic_iarchive.cpp"" }}}" Berkus 13270 BOOST_CLASS_EXPORT(some_template<>) fails to load pointers serialization Boost 1.65.0 To Be Determined Bugs Robert Ramey new 2017-10-23T09:13:31Z 2017-10-23T09:32:06Z "After upgrading from 1.56.0 to 1.65.1 loading pointers with xml_warchive to a template with default template arguments no longer works. {{{ BOOST_EXPORT_CLASS(some_template<>) ptr *some_base_class; ar & make_nvp(""ptr"", ptr); }}} Saving works okay, loading fails => the type cannot be found. The problem seems to be related to the <> characters in the default template argument of the BOOST_CLASS_EXPORT. Debugging the serialization code I see that the serialization internal key[] now reads `some_template<<>`. Note the ""<"" and the ""<"" character. I haven't checked 1.56.0, but my guess is that it was probably `some_template<>`. At any rate, having `<<` is definitely wrong, as < is, of course, escaped <. Changing BOOST_CLASS_EXPORT to BOOST_CLASS_EXPORT_GUID and specifying the correct key seems to work okay." Hajo Kirchhoff 13269 Wrong docu for uniform_real-distribution random Boost 1.63.0 To Be Determined Bugs No-Maintainer new 2017-10-22T19:47:20Z 2017-10-22T19:47:20Z "The documentation for the params of uniform real distribution states ""min <= max"" as the requirement: https://github.com/boostorg/random/blob/b58774fd5449609ede3ff80d4b82574c8e9094c6/include/boost/random/uniform_real_distribution.hpp#L99 This should be ""min < max""." Flamefire 13268 Exception thrown: write access violation. interprocess Boost 1.65.0 To Be Determined Bugs Ion Gaztañaga new 2017-10-21T10:18:08Z 2017-10-22T00:30:49Z "I'm using boost::interprocess to make an asynchronous queue for IPC. I put the source code at https://github.com/wronso/AsyncQue. However, it sometimes throws write access violation exception. The environment is given as below: - OS: Windows 10 Pro, Version:1709, Build:16299.19 - Compiler: Visual Studio Professional 2017, Version 15.4.1 - Boost Version: 1.65.1 Reproduce Steps: 1. Git clone and open ipc.sln 2. Build Develop | x64 3. Run Results: It sometimes throws write access violation exception. And I'm seeing 2 kinds of call stacks when the exception occurs. I've attached them as file: exception1.txt and exception2.txt " wronso 13267 b2 doesn't recognize ZLIB options other than ZLIB_SOURCE Building Boost Boost 1.65.0 To Be Determined Bugs Jonathan Turkanis new 2017-10-20T13:16:09Z 2017-10-20T13:21:29Z "Building Boost 1.65.1 on Windows with msvc-12.0. b2 doesn't detect zlib with the command line below: {{{ b2 toolset=msvc-12.0 --with-iostreams -sZLIB_INCLUDE=D:/Libraries/zlib-1.2.11/stage/x86/include -sZLIB_LIBRARY_PATH=D:/Libraries/zlib-1.2.11/stage/x86/lib -sZLIB_NAME=zlib variant=debug link=shared --stagedir=stage/x86 stage }}} and the following line is emitted: {{{ - zlib : no (cached) }}} b2 detects zlib only when ZLIB_SOURCE is specified. However, since I built zlib with CMake and INSTALLed on different directory, zconf.h doesn't exist on the directory under the source directory from which Boost is about to include the file from. A workaround is to copy zconf.h from the actual include directory into the source directory when I run b2 and delete it after building is finished." Shintaro Sakahara 13265 boost atomic lib memory_order error atomic Boost 1.63.0 To Be Determined Bugs timblechmann new 2017-10-19T11:08:26Z 2017-10-19T11:08:26Z "boost atomic lib memory_order error. someone deleted memory_order_release/memory_order_acquire code, which should be translate to sfence/lfence , but now you see that they were removed. BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT { if (order == memory_order_seq_cst) { __asm__ __volatile__ ( #if defined(__x86_64__) || defined(__SSE2__) ""mfence\n"" #else ""lock; addl $0, (%%esp)\n"" #endif ::: ""memory"" ); } else if ((order & (memory_order_acquire | memory_order_release)) != 0) { __asm__ __volatile__ ("""" ::: ""memory""); } } I suggest code is: BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT { if (order == memory_order_seq_cst) { __asm__ __volatile__ ( #if defined(__x86_64__) || defined(__SSE2__) ""mfence\n"" #else ""lock; addl $0, (%%esp)\n"" #endif ::: ""memory"" ); return; } if ((order & (memory_order_acquire )!=0 ){ __asm__ __volatile__ ( #if defined(__x86_64__) || defined(__SSE2__) ""lfence\n"" #else ""lock; addl $0, (%%esp)\n"" #endif ::: ""memory"" ); return; } if ((order & (memory_order_release )!=0 ){ __asm__ __volatile__ ( #if defined(__x86_64__) || defined(__SSE2__) ""sfence\n"" #else ""lock; addl $0, (%%esp)\n"" #endif ::: ""memory"" ); } } Linux system do not delete lfence and sfence code, but why C++ lib deleted, this will cause error in multi_thread programe. " haisql@… 13263 error in boost lockfree 1.58 documentation lockfree Boost 1.58.0 To Be Determined Tasks timblechmann new 2017-10-17T23:39:37Z 2017-10-17T23:39:37Z "http://www.boost.org/doc/libs/1_58_0/doc/html/boost/lockfree/spsc_queue.html For 'read_available', the doc incorrectly states that this should only be called by the producer thread. Similarly for 'write_available' (s/b producer, and not consumer, thread)" anonymous 13261 managed_shared_memory construction fail after PC-Cleaning tools were used on the machine interprocess Boost 1.65.0 To Be Determined Bugs Ion Gaztañaga new 2017-10-13T14:33:55Z 2017-10-13T14:35:13Z "Hi, because managed_shared_memory use windows_bootstamp, the creation of this object fails when events log were cleaned on the machine. In detail, I've found this behaviour after using tools like ""CCleaner"". Is this acceptable? Can I ask why boost does not use named shared memory or Pipe for Windows IPC? Thanks, Marco" m.fornaro6@… 13259 seg fault at cleanup time, __run_exit_handlers serialization Boost Development Trunk To Be Determined Bugs Robert Ramey new 2017-10-12T12:00:35Z 2017-10-12T12:00:35Z "I am getting a segfault at __run_exit_handlers time with 1.66 develop commit id d21a064a69663faf106ea363bf4785904bfd44d1 (Oct 6) using build command {{{~/boost/libs/serialization/test$ ../../../b2 toolset=clang test_dll_exported -q}}}: {{{ ==13247== Invalid free() / delete / delete[] / realloc() ==13247== at 0x4C2F25B: operator delete(void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==13247== by 0x50A097F: __gnu_cxx::new_allocator >::deallocate(std::_Rb_tree_node*, unsigned long) (new_allocator.h:110) ==13247== by 0x50A092F: __gnu_cxx::__alloc_traits > >::deallocate(std::allocator >&, std::_Rb_tree_node*, unsigned long) (alloc_traits.h:133) ==13247== by 0x50A07CB: std::_Rb_tree, boost::serialization::typeid_system::type_compare, std::allocator >::_M_put_node(std::_Rb_tree_node*) (stl_tree.h:509) ==13247== by 0x50A071B: std::_Rb_tree, boost::serialization::typeid_system::type_compare, std::allocator >::_M_drop_node(std::_Rb_tree_node*) (stl_tree.h:576) ==13247== by 0x50A127B: std::_Rb_tree, boost::serialization::typeid_system::type_compare, std::allocator >::_M_erase_aux(std::_Rb_tree_const_iterator) (stl_tree.h:2275) ==13247== by 0x50A1234: std::_Rb_tree, boost::serialization::typeid_system::type_compare, std::allocator >::erase(std::_Rb_tree_const_iterator) (stl_tree.h:1057) ==13247== by 0x509FF64: std::multiset >::erase(std::_Rb_tree_const_iterator) (stl_multiset.h:571) ==13247== by 0x509FB97: boost::serialization::typeid_system::extended_type_info_typeid_0::type_unregister() (extended_type_info_typeid.cpp:108) ==13247== by 0x4205E4: boost::serialization::extended_type_info_typeid::~extended_type_info_typeid() (extended_type_info_typeid.hpp:96) ==13247== by 0x420134: boost::serialization::singleton >::get_instance()::singleton_wrapper::~singleton_wrapper() (singleton.hpp:117) ==13247== by 0x601B26F: __run_exit_handlers (exit.c:83) ==13247== Address 0x63b9d80 is 0 bytes inside a block of size 40 free'd ==13247== at 0x4C2F25B: operator delete(void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==13247== by 0x50A097F: __gnu_cxx::new_allocator >::deallocate(std::_Rb_tree_node*, unsigned long) (new_allocator.h:110) ==13247== by 0x50A092F: __gnu_cxx::__alloc_traits > >::deallocate(std::allocator >&, std::_Rb_tree_node*, unsigned long) (alloc_traits.h:133) ==13247== by 0x50A07CB: std::_Rb_tree, boost::serialization::typeid_system::type_compare, std::allocator >::_M_put_node(std::_Rb_tree_node*) (stl_tree.h:509) ==13247== by 0x50A071B: std::_Rb_tree, boost::serialization::typeid_system::type_compare, std::allocator >::_M_drop_node(std::_Rb_tree_node*) (stl_tree.h:576) ==13247== by 0x50A0647: std::_Rb_tree, boost::serialization::typeid_system::type_compare, std::allocator >::_M_erase(std::_Rb_tree_node*) (stl_tree.h:1640) ==13247== by 0x50A05BE: std::_Rb_tree, boost::serialization::typeid_system::type_compare, std::allocator >::~_Rb_tree() (stl_tree.h:873) ==13247== by 0x50A0584: std::multiset >::~multiset() (stl_multiset.h:92) ==13247== by 0x50A0414: boost::serialization::singleton > >::get_instance()::singleton_wrapper::~singleton_wrapper() (singleton.hpp:117) ==13247== by 0x601B5E9: __cxa_finalize (cxa_finalize.c:56) ==13247== by 0x5087F12: ??? (in /home/jking/boost/bin.v2/libs/serialization/build/clang-gnu-linux-4.0.0/debug/threadapi-pthread/libboost_serialization.so.1.66.0) ==13247== by 0x4011109: _dl_fini (dl-fini.c:235) ==13247== Block was alloc'd at ==13247== at 0x4C2E19F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==13247== by 0x50A0FC0: __gnu_cxx::new_allocator >::allocate(unsigned long, void const*) (new_allocator.h:104) ==13247== by 0x50A0F6B: __gnu_cxx::__alloc_traits > >::allocate(std::allocator >&, unsigned long) (alloc_traits.h:130) ==13247== by 0x50A0E43: std::_Rb_tree, boost::serialization::typeid_system::type_compare, std::allocator >::_M_get_node() (stl_tree.h:505) ==13247== by 0x50A0DFF: std::_Rb_tree, boost::serialization::typeid_system::type_compare, std::allocator >::_M_create_node(boost::serialization::typeid_system::extended_type_info_typeid_0 const* const&) (stl_tree.h:527) ==13247== by 0x50A0D8F: std::_Rb_tree_node* std::_Rb_tree, boost::serialization::typeid_system::type_compare, std::allocator >::_Alloc_node::operator()(boost::serialization::typeid_system::extended_type_info_typeid_0 const* const&) const (stl_tree.h:473) ==13247== by 0x50A0BDB: std::_Rb_tree_iterator std::_Rb_tree, boost::serialization::typeid_system::type_compare, std::allocator >::_M_insert_, boost::serialization::typeid_system::type_compare, std::allocator >::_Alloc_node>(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, boost::serialization::typeid_system::extended_type_info_typeid_0 const* const&, std::_Rb_tree, boost::serialization::typeid_system::type_compare, std::allocator >::_Alloc_node&) (stl_tree.h:1535) ==13247== by 0x50A09FC: std::_Rb_tree, boost::serialization::typeid_system::type_compare, std::allocator >::_M_insert_equal(boost::serialization::typeid_system::extended_type_info_typeid_0 const* const&) (stl_tree.h:1918) ==13247== by 0x509FE2C: std::multiset >::insert(boost::serialization::typeid_system::extended_type_info_typeid_0 const* const&) (stl_multiset.h:474) ==13247== by 0x509FA68: boost::serialization::typeid_system::extended_type_info_typeid_0::type_register(std::type_info const&) (extended_type_info_typeid.cpp:91) ==13247== by 0x4201CA: boost::serialization::extended_type_info_typeid::extended_type_info_typeid() (extended_type_info_typeid.hpp:91) ==13247== by 0x4200FE: boost::serialization::singleton >::get_instance()::singleton_wrapper::singleton_wrapper() (singleton.hpp:117) }}} In gdb it looks like this, not sure if it's the same thing however: {{{ (gdb) r Starting program: /home/jking/boost/bin.v2/libs/serialization/test/test_dll_exported.test/clang-gnu-linux-4.0.0/debug/threadapi-pthread/test_dll_exported No errors detected. Program received signal SIGSEGV, Segmentation fault. 0x00007ffff71f79b6 in std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (gdb) bt #0 0x00007ffff71f79b6 in std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #1 0x00007ffff793564b in std::_Rb_tree, boost::serialization::detail::key_compare, std::allocator >::_M_erase_aux ( this=0x7ffff7b9e948 > >::get_instance()::t>, __position=0x631870 >::get_instance()::t>) at /usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_tree.h:2272 #2 0x00007ffff7935615 in std::_Rb_tree, boost::serialization::detail::key_compare, std::allocator >::erase ( this=0x7ffff7b9e948 > >::get_instance()::t>, __position=0x631870 >::get_instance()::t>) at /usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_tree.h:1057 #3 0x00007ffff7934395 in std::multiset >::erase ( this=0x7ffff7b9e948 > >::get_instance()::t>, __position=0x631870 >::get_instance()::t>) at /usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_multiset.h:571 #4 0x00007ffff7933ec9 in boost::serialization::extended_type_info::key_unregister (this=0x631870 >::get_instance()::t>) at ../../../libs/serialization/src/extended_type_info.cpp:136 #5 0x000000000041fed7 in boost::serialization::extended_type_info_no_rtti::~extended_type_info_no_rtti ( this=0x631870 >::get_instance()::t>) at ../../../boost/serialization/extended_type_info_no_rtti.hpp:107 #6 0x000000000041fa05 in boost::serialization::singleton >::get_instance()::singleton_wrapper::~singleton_wrapper() ( this=0x631870 >::get_instance()::t>) at ../../../boost/serialization/singleton.hpp:117 #7 0x00007ffff68a3270 in __run_exit_handlers (status=0, listp=0x7ffff6c2a5d8 <__exit_funcs>, run_list_atexit=run_list_atexit@entry=true, run_dtors=run_dtors@entry=true) at exit.c:83 #8 0x00007ffff68a32ca in __GI_exit (status=) at exit.c:105 #9 0x00007ffff68893f8 in __libc_start_main (main=0x414660 , argc=1, argv=0x7fffffffe2e8, init=, fini=, rtld_fini=, stack_end=0x7fffffffe2d8) at ../csu/libc-start.c:325 #10 0x00000000004143ca in _start () at ../../../boost/serialization/singleton.hpp:155 }}} I don't think either of these issues specifically describes the memory leak in #13186 (valgrind is reporting that too) which is why I am opening a new defect for it." James E. King, III 13258 boost/archive/text_iarchive.hpp memory leaks with MFC! serialization Boost 1.65.0 To Be Determined Bugs Robert Ramey new 2017-10-12T05:56:51Z 2017-10-12T05:56:51Z "visual studio 2017 community edition; boost c++, 1.65 installed through vcpkg; reproducing steps. 1. install vcpkg; vcpkg install boost 2. create a new project with mfc shared support; 3. add #include to stdafx.h 4. build -> run -> exit 5. visual studio will generate messages like: {{{ Detected memory leaks! Dumping objects -> {180} normal block at 0x01546820, 8 bytes long. Data: < L > E8 F1 4C 01 00 00 00 00 {179} normal block at 0x01546510, 20 bytes long. Data: < eT eT eT > 10 65 54 01 10 65 54 01 10 65 54 01 01 01 CD CD {178} normal block at 0x01546AC0, 8 bytes long. Data: < L > D0 F1 4C 01 00 00 00 00 {177} normal block at 0x01546790, 20 bytes long. Data: < gT gT gT > 90 67 54 01 90 67 54 01 90 67 54 01 01 01 CD CD {176} normal block at 0x0153B948, 8 bytes long. Data: <` L > 60 F1 4C 01 00 00 00 00 {175} normal block at 0x01546190, 20 bytes long. Data: < aT aT aT > 90 61 54 01 90 61 54 01 90 61 54 01 01 01 CD CD {174} normal block at 0x0153BA98, 8 bytes long. Data: 48 F1 4C 01 00 00 00 00 {173} normal block at 0x015435A8, 20 bytes long. Data: < 5T 5T 5T > A8 35 54 01 A8 35 54 01 A8 35 54 01 01 01 CD CD {172} normal block at 0x0153B8A0, 8 bytes long. Data: <0 L > 30 F1 4C 01 00 00 00 00 {171} normal block at 0x01543568, 20 bytes long. Data: 68 35 54 01 68 35 54 01 68 35 54 01 01 01 CD CD {170} normal block at 0x0153BA28, 8 bytes long. Data: < L > 18 F1 4C 01 00 00 00 00 {169} normal block at 0x01543528, 20 bytes long. }}} I can finally nail down to these two headers; If they exist in stdafx.h at the same time, there will be memory leakage errors. {{{ #include // MFC core and standard components #include }}} " LL L 13257 Log attributes passed as arguments to open_record are ignored log Boost 1.64.0 To Be Determined Bugs Andrey Semashev new 2017-10-11T19:19:04Z 2017-10-16T12:26:31Z "Why does boost::log::sources::basic_logger::open_record_unlocked(ArgsT const&) ignore its argument when calling boost::log::core::open_record()? {{{ #!cpp /*! * Unlocked \c open_record */ template< typename ArgsT > record open_record_unlocked(ArgsT const&) { return m_pCore->open_record(m_Attributes); } }}} The boost::log::sources::logger_mt::open_record() eventually passes the attributes to this function where they are summarily ignored. How is something as fundamental to the Boost Log library as BOOST_LOG_WITH_PARAMETERS() supposed to work! It doesn't, by the way." Thomas M. Bernal 13256 regex '([|&])\1?' with backreference fails to compile if regex::nosub flag used regex Boost 1.58.0 To Be Determined Bugs John Maddock new 2017-10-11T09:06:39Z 2017-10-11T09:08:00Z "when compiling a regex with regex::nosubs flag set, a regex with a back reference fails with: Invalid back reference: specified capturing group does not exist. The error occurred while parsing the regular expression: '([|&])>>>HERE>>>\1?'. Test program: #include #include #include using namespace std; int main(int argc, char **argv) { try { boost::regex::flag_type flags = boost::regex::ECMAScript; flags |= boost::regex::nosubs; boost::regex theRegex(""([|&])\\1?"", flags); cout << ""ok\n""; return 0; } catch (exception &e) { cerr << ""exception: "" << e.what() << ""\n""; return 1; } } g++ -std=c++11 test-boost-regex-bug.cpp -o test-boost-regex-bug -l boost_regex" Gene Thomas 13253 RFC 4180 CSV separator tokenizer Boost 1.63.0 To Be Determined Feature Requests jsiek new 2017-10-10T00:21:26Z 2017-10-10T15:38:52Z "It would be useful to have a RFC 4180 CSV separator alternative to `escaped_list_separator`. The RFC 4180 CSV format is more compatible with popular spreadsheet software. It really is a different format: 1. Putting quotes around a field allows commas only if the initial quote is at the beginning of the field. 2. Quotes can be embedded in a quoted field if they are repeated. For example: {{{ field 1,""embedded """" in field 2"",field 3 }}} 3. Newlines can be embedded in a quoted field. 4. There is no escape character (except for the special case of a repeated quote). It is easy to write a tokenizer function that parses this format, except for the embedded newlines. I have some working code that could be cleaned up and submitted. " tom_becker@… 13252 Bootstrap.bat gcc throws compilation error (code is not c90 complilant) Building Boost Boost 1.65.0 To Be Determined Bugs new 2017-10-09T21:16:47Z 2017-11-13T18:32:08Z "Trying to compile the new Boost 1.65.1 with Mingw w64 (gcc 4.8.3) on a Windows 10. While running {{{bootstrap.bat gcc}}} I get: {{{ ... \boost_1_65_1\tools\build\src\engine>.\bootstrap\jam0 -f build.jam --toolset=gcc ""--toolset-root= "" ...found 161 targets... ...updating 3 targets... [MKDIR] bin.ntx86_64 [COMPILE] bin.ntx86_64\b2.exe debugger.c: In function 'debug_start_child': debugger.c:1128:5: error: 'for' loop initial declarations are only allowed in C99 mode for ( int i = 1; i < argc; ++i ) ^ debugger.c:1128:5: note: use option -std=c99 or -std=gnu99 to compile your code strings.c: In function 'string_rtrim': strings.c:195:5: warning: ISO C90 forbids mixed declarations and code [-Wpedantic] char * p = self->value + self->size - 1; ^ ... }}} So making a small modification (declare the ''i'' variable outside the for-loop) into {{{boost_1_65_1\tools\build\src\engine\debugger.c:1128}}} I can make it compile perfectly. I guess adding {{{--std=c99}}} or {{{--std=c11}}} into {{{boost_1_65_1\tools\build\src\engine\config_toolset.bat:204}}} could been even better." carlos.federico005@… 13250 bootstrap.bat fails for toolset mingw Building Boost Boost 1.65.0 To Be Determined Bugs new 2017-10-08T17:38:22Z 2017-10-08T17:38:22Z "See also ticket #12997 Have successfully built several versions of boost going back about 2 years. Each build fails until I appropriately tweak the bootstrap and config scripts. For 1.65.1, the fix was pretty easy, requiring only a simply manual addition to ..tools/build/src/engine/config_toolset.bat Near the end of that script (the last toolset it checks) is mingw. Unfortunately, jam doesn't understand toolset mingw, so the toolset needs to be set to gcc. It doesn't work to call bootstrap.bat with gcc because then subsequent scripts assume either visual studior or msvc. The fix is to insert the line set ""BOOST_JAM_TOOLSET=gcc"" immediately after the line :Skip_INTEL_WIN32 then run b2 with toolset=gcc. " Michael H Kelley 13248 test_hyperexponential_distribution fails in debug builds on travis CI osx any xcode level (clang 4.2.1 for example) random Boost 1.65.0 To Be Determined Bugs No-Maintainer new 2017-10-08T11:50:07Z 2017-10-08T11:50:07Z "Appears to be platform related as debug builds on linux with clang (any version) do not fail this way. https://travis-ci.org/jeking3/random/builds/284931646 {{{ testing.capture-output bin.v2/libs/random/test/test_hyperexponential_distribution.test/clang-darwin-darwin-4.2.1/debug/threadapi-pthread/test_hyperexponential_distribution.run ====== BEGIN OUTPUT ====== Running 7 test cases... libs/random/test/test_hyperexponential_distribution.cpp:275: error: in ""test_streaming"": check param == check_param has failed [[0.25 0.25 0.25 0.25] [1 2 3 4] != [1] [1]] libs/random/test/test_hyperexponential_distribution.cpp:294: error: in ""test_streaming"": check param == check_param has failed [[0.1 0.2 0.3 0.4] [1 1 1 1] != [1] [1]] *** 2 failures are detected in the test module ""Master Test Suite"" EXIT STATUS: 201 ====== END OUTPUT ====== bin.v2/libs/random/test/test_hyperexponential_distribution.test/clang-darwin-darwin-4.2.1/debug/threadapi-pthread/test_hyperexponential_distribution.run... }}} " James E. King, III 13247 test_independent_bits32 fails unit test in release mode only at -O2 and higher under clang 3.8, 3.9, 4.0, 5.0 random Boost 1.65.0 Boost 1.66.0 Bugs Steven Watanabe new 2017-10-08T04:13:39Z 2017-10-10T16:10:23Z "I'm working on adding CI support to Boost.Random and I found that the clang build jobs are failing on this test as follows. To reproduce, use Boost.Random from the test directory with ubuntu zesty and clang 4.0: {{{ passes: ../../../b2 toolset=clang variant=release test_independent_bits32 clean ../../../b2 toolset=clang variant=release cxxflags=""-O0"" test_independent_bits32 passes: ../../../b2 toolset=clang variant=release test_independent_bits32 clean ../../../b2 toolset=clang variant=release cxxflags=""-O1"" test_independent_bits32 fails: ../../../b2 toolset=clang variant=release test_independent_bits32 clean ../../../b2 toolset=clang variant=release cxxflags=""-O2"" test_independent_bits32 }}} No versions of gcc at any optimization level seem to fail and ubsan testing also does not fail (but it is a debug build) so this needs further investigation to understand if it is a clang optimizer bug that's been around for a while or if the test is wrong for clang somehow. {{{ testing.capture-output bin.v2/libs/random/test/test_independent_bits32.test/clang-gnu-linux-3.9.0/release/threadapi-pthread/test_independent_bits32.run ====== BEGIN OUTPUT ====== Running 13 test cases... libs/random/test/test_generator.ipp(246): error: in ""validate"": check urng() == 4123659995U has failed [0 != 4123659995] libs/random/test/test_generator.ipp(256): error: in ""validate_seed_seq"": check urng() == 666528879U has failed [0 != 666528879] libs/random/test/test_generator.ipp(268): error: in ""validate_iter"": check urng() == 3408548740U has failed [0 != 3408548740] libs/random/test/test_generator.ipp(278): error: in ""test_generate"": check { actual, actual + N } == { expected, expected + N } has failed. Mismatch at position 0: 0 != 3499211612 Mismatch at position 1: 0 != 581869302 Mismatch at position 2: 0 != 3890346734 Mismatch at position 3: 0 != 3586334585 *** 4 failures are detected in the test module ""Master Test Suite"" EXIT STATUS: 201 ====== END OUTPUT ====== ...failed testing.capture-output bin.v2/libs/random/test/test_independent_bits32.test/clang-gnu-linux-3.9.0/release/threadapi-pthread/test_independent_bits32.run... }}} {{{ testing.capture-output bin.v2/libs/random/test/test_independent_bits32.test/clang-gnu-linux-5.0.1/release/threadapi-pthread/test_independent_bits32.run ====== BEGIN OUTPUT ====== Running 13 test cases... libs/random/test/test_generator.ipp(246): error: in ""validate"": check urng() == 4123659995U has failed [0 != 4123659995] libs/random/test/test_generator.ipp(256): error: in ""validate_seed_seq"": check urng() == 666528879U has failed [0 != 666528879] libs/random/test/test_generator.ipp(268): error: in ""validate_iter"": check urng() == 3408548740U has failed [0 != 3408548740] libs/random/test/test_generator.ipp(278): error: in ""test_generate"": check { actual, actual + N } == { expected, expected + N } has failed. Mismatch at position 0: 0 != 3499211612 Mismatch at position 1: 0 != 581869302 Mismatch at position 2: 0 != 3890346734 Mismatch at position 3: 0 != 3586334585 *** 4 failures are detected in the test module ""Master Test Suite"" EXIT STATUS: 201 ====== END OUTPUT ====== ...failed testing.capture-output bin.v2/libs/random/test/test_independent_bits32.test/clang-gnu-linux-5.0.1/release/threadapi-pthread/test_independent_bits32.run... }}}" James E. King, III 13245 Coroutines2: Crashes Visual Studio when attached with a debugger (on Windows x86) context Boost 1.65.0 To Be Determined Bugs olli new 2017-10-04T13:50:24Z 2017-11-30T06:38:12Z "Hi, In my application I'm using coroutine2 to generate some objects which I have to decode from a stream. These objects are generated using coroutines. My problem is that as soon as I reach the end of the stream and would theoretically throw std::ios_base::failure my application crashes under certain conditions. The function providing this feature is implemented in C++, exported as a C function and called from C#. This all happens on a 32bit process on Windows 10 x64. Unfortunately it only reliably crashes when I start my test from C# in debugging mode WITHOUT the native debugger attached. As soon as I attach the native debugger everything works like expected. Here is a small test application to reproduce this issue: Api.h {{{ #pragma once extern ""C"" __declspec(dllexport) int __cdecl test(); }}} Api.cpp {{{ #include #include #include #include ""Api.h"" #define BOOST_COROUTINES2_SOURCE #include int test() { using coro_t = boost::coroutines2::coroutine; coro_t::pull_type source([](coro_t::push_type& yield) { std::vector buffer(200300, 0); std::stringstream stream; stream.write(buffer.data(), buffer.size()); stream.exceptions(std::ios_base::eofbit | std::ios_base::badbit | std::ios_base::failbit); try { std::vector dest(100100, 0); while (stream.good() && !stream.eof()) { stream.read(&dest[0], dest.size()); std::cerr << ""CORO: read: "" << stream.gcount() << std::endl; } } catch (const std::exception& ex) { std::cerr << ""CORO: caught ex: "" << ex.what() << std::endl; } catch (...) { std::cerr << ""CORO: caught unknown exception."" << std::endl; } }); std::cout << ""SUCCESS"" << std::endl; return 0; } }}} c#: {{{ using System; using System.Runtime.InteropServices; namespace CoroutinesTest { class Program { [DllImport(""ConsoleApplication1.dll"", EntryPoint = ""test"", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)] internal static extern Int32 test(); static void Main(string[] args) { test(); Console.WriteLine(""SUCCESS""); } } } }}} Some details: * We are using Visual Studio 2015 14 and dynamically link the c++ runtime. * The test library statically links Boost 1.63.0. * We also tried to reproduce this behaviour with calling the functionallity directly from c++ and from python. Both tests have not been successful so far. * If you start the c# code with CTRL F5 (meaning without the .net debugger) everything will also be fine. Only if you start it with F5 (meaning the .NET Debugger attached) the visual studio instance will crash. Also be sure not to enable the native debugger! * Note: If we don't use the exceptions in the stream, everything seams to be fine as well. Unfortunately the code decoding my objects makes use of them and therefore I cannot avoid this. Would be amazing if you had some additional hints on what might go wrong here or a solution. Thanks in advance! Best Regards, Michael " Michael Eiler 13243 error_category() BOOST_SYSTEM_NOEXCEPT: std_cat_( this ) {} gives warning in Visual Studio 2010 system Boost 1.65.0 To Be Determined Bugs Beman Dawes new 2017-10-03T10:50:51Z 2017-10-03T10:53:08Z "\boost_1_65_1-64\boost\system\error_code.hpp line: 255: error_category() BOOST_SYSTEM_NOEXCEPT: std_cat_( this ) {} When called from a file that is complied with Visual Studio 2010, this lines gives: warning C4355: 'this' : used in base member initializer list" anonymous 13238 Typo in Boost.Move move Boost Development Trunk To Be Determined Bugs Ion Gaztañaga new 2017-10-01T14:01:11Z 2017-10-03T00:49:26Z "There is no warning 4675 for the MS compiler. Compiling gives {{{ boost/move/detail/config_begin.hpp(17): warning C4619: #pragma warning: there is no warning number '4675' }}} warning C4619 is (level 3) so visible in most cases. My compiler: {{{ Microsoft (R) C/C++ Optimizing Compiler Version 19.11.25508.2 for x64 }}} " Jerker Bäck 13235 "Wrong ""Getting Started"" link" trac / subversion Boost 1.63.0 To Be Determined Bugs Douglas Gregor new 2017-09-29T07:56:18Z 2017-09-29T07:56:18Z "Hi, In [https://svn.boost.org/trac10/wiki/ModularBoost], the getting stated link points to the wrong page (which can be obtained to following the link). Thanks" anonymous 13233 address sanitize dumps error log Boost 1.65.0 To Be Determined Bugs Andrey Semashev new 2017-09-29T03:16:34Z 2018-02-20T15:21:01Z "When compiler user code with -fsanitize=address -fsanitize=undefined,it dumps: {{{ /usr/local/include/boost/smart_ptr/detail/shared_count.hpp:426:36: runtime error: member call on address 0x6030000134b0 which does not point to an object of type 'sp_counted_base' 0x6030000134b0: note: object is of type 'boost::detail::sp_counted_impl_p' 03 00 80 6a 40 2a 4f fb b6 7f 00 00 05 00 00 00 01 00 00 00 b0 ed 00 00 20 60 00 00 00 00 00 00 ^~~~~~~~~~~~~~~~~~~~~~~ vptr for 'boost::detail::sp_counted_impl_p' /usr/local/include/boost/log/attributes/attribute_value.hpp:200:37: runtime error: member call on address 0x60400000cad0 which does not point to an object of type 'impl' 0x60400000cad0: note: object is of type 'boost::log::v2_mt_posix::attributes::attribute_value_impl, std::allocator > >' 01 00 00 43 88 2a 4f fb b6 7f 00 00 01 00 00 00 be be be be b0 22 01 00 30 60 00 00 1d 00 00 00 ^~~~~~~~~~~~~~~~~~~~~~~ vptr for 'boost::log::v2_mt_posix::attributes::attribute_value_impl, std::allocator > >' }}} could you fix it?It may caused by logging::core instance " anonymous 13232 u32regex_replace - None of these prototypes have callback formatter capability regex Boost 1.65.0 To Be Determined Feature Requests John Maddock new 2017-09-28T21:08:28Z 2017-09-28T21:08:28Z "I've had to do a workaround using a u32regex_iterator.\\ This one takes parameters wstring, u32regex, and function address.\\ (Internally it converts the wstring to u32string and does\\ the replacement with the user callback). I just have to add more prototypes for the different forms\\ needed, but it would be nice if I didn't have to do this. {{{ void U_Regex_Replace_Callback( X_string& strSrc, U_X_regex& Rx, X_32string (*func)(X_u32smatch) ) { X_32string str32Src, str32Repl, str32Out; WstrToU32string( strSrc, str32Src ); str32Out.clear(); boost::u32regex_iterator i(boost::make_u32regex_iterator( str32Src, Rx)), j; U32SITR last = str32Src.begin(); while(i != j) { str32Out.append( (*i).prefix() ); str32Out.append( func( (*i) ) ) ; last = (*i)[0].second; ++i; } str32Out.append( last, str32Src.end() ); U32stringToWstr( str32Out, strSrc ); } }}} " robic@… 13231 u32regex_replace() for std::u32string (UTF-32) won't compile regex Boost 1.64.0 To Be Determined Bugs John Maddock new 2017-09-27T23:24:52Z 2017-09-28T20:46:16Z "Note - This pertains to input UTF-32 strings. Compiler: VS2015 , VC++ Boost version: 1.64 The u32regex_search() works fine and as expected ================================= Problem description: Intellisence detects proper input\\ parameters using the u32string parameter, but throws many\\ errors when compiling. The errors start with\\ >boost_1_64_0\boost/functional/hash/extensions.hpp(262): error C2664: 'size_t boost::hash_value(std::type_index)': cannot convert argument 1 from 'const char32_t' to 'std::type_index'\\ and end with\\ > RxReplace.cpp(9255): note: see reference to function template instantiation 'std::basic_string,std::allocator> boost::u32regex_replace(const std::basic_string,std::allocator> &,const boost::u32regex &,const std::basic_string,std::allocator> &,boost::regex_constants::match_flag_type)' being compiled with about 20 errors in between. \\ I hope this is just a problem with extensions.hpp\\ and maybe there is a quick fix (or it has already been fixed).\\ I desperately need this to work with ''std::u32string'' types\\ as UnicodeString just won't cut it for my purposes. ''From the documentation:\\ u32regex_replace\\ \\ For each regex_replace algorithm defined by\\ , then defines an overloaded algorithm that takes the same arguments, but which is called u32regex_replace, and which will accept UTF-8, UTF-16 or UTF-32 encoded data, as well as an ICU UnicodeString as input. '' The code below reproduces the compile errors {{{ // rxconst.h // ============================== typedef std::u32string X_32string; typedef std::wstring X_string; typedef boost::u32regex U_X_regex; typedef boost::u32match X_u32match; typedef std::u32string::const_iterator U32SITR; #define U_MAKEREGEX(str,options) make_u32regex(str,options) #define U_REGEX_SEARCH boost::u32regex_search #define U_REGEX_REPLACE boost::u32regex_replace // RxReplace.cpp ( won't compile ) // ============================== #include ""rxconst.h""; U_X_regex uRx = U_MAKEREGEX( _T(""[trgt]+""), regex_constants::perl ); X_32string sTarget, sFmt, sOutput; WstrToU32string( X_string(_T(""target"")), sTarget ); WstrToU32string( X_string(_T("""")), sFmt ); sOutput = U_REGEX_REPLACE( sTarget, uRx, sFmt ); // <-- Won't compile // RxSearch.cpp ( compiles and runs as expected ) // ============================== #include ""rxconst.h""; U_X_regex uRx = U_MAKEREGEX( _T(""[abce]+""), regex_constants::perl ); X_32string sSrc; WstrToU32string( X_string(_T(""source"")), sSrc ); U32SITR SitrStart = sSrc.begin(); U32SITR start = SitrStart; U32SITR end = sSrc.end(); X_u32match _M; while ( U_REGEX_SEARCH( start, end, _M, uRx, Flags, SitrStart ) ) { // ... } }}} " robic@… 13230 _FILE_OFFSET_BITS=64 breaks compilation with Android NDK r15 and API<24 filesystem Boost 1.65.0 To Be Determined Bugs Beman Dawes new 2017-09-27T18:09:30Z 2018-03-19T16:44:01Z "Behavior of `_FILE_OFFSET_BITS` in Android NDK is described at android.googlesource.com/platform/bionic/+/master/docs/32-bit-abi.md > Android support for `_FILE_OFFSET_BITS=64` (which turns off_t into `off64_t` and replaces each `off_t` function with its `off64_t` counterpart, such as `lseek` in the source becoming `lseek64` at runtime) was added late. Even when it became available for the platform, it wasn‘t available from the NDK until !r15. Before NDK !r15, `_FILE_OFFSET_BITS=64` silently did nothing: all code compiled with that was actually using a 32-bit `off_t`. With a new enough NDK, the situation becomes complicated. If you’re targeting an API before 21, almost all functions that take an `off_t` become unavailable. You‘ve asked for their 64-bit equivalents, and none of them (except `lseek`/`lseek64`) exist. As you increase your target API level, you’ll have more and more of the functions available. API 12 adds some of the `` functions, API 21 adds mmap, and by API 24 you have everything including ``. In `filesystem/src/operations.cpp` `_FILE_OFFSET_BITS` is unconditionally defined to `64` in hope that > at worst, these defines may have no effect It actually breaks compilation with Android NDK !r15 if `__ANDROID_API__` is less than 24." d.mikhirev@… 13228 argument parsing errors when unit_test_main() is called in a loop more than ones test Boost 1.65.0 To Be Determined Bugs Gennadiy Rozental new 2017-09-21T19:54:40Z 2017-09-22T20:49:19Z "I want to run my test suit in a loop to detect race conditions in a multi threading environment. You may see at my example test suit. The problems does not occur with long options! {{{ Claus-MBP:AgentProV4 clausklein$ ./demo_test -l all -2 loops requested: 2 0: ./demo_test 1: -l 2: all Running 1 test case... Entering test module ""Demo"" demo_test.cpp:11: Entering test case ""QueuedThreadPoolLoad_test"" simple compare demo_test.cpp:16: info: check i == 0 has passed demo_test.cpp:11: Leaving test case ""QueuedThreadPoolLoad_test""; testing time: 88us Leaving test module ""Demo""; testing time: 133us *** No errors detected 0: ./demo_test 1: -l 2: all loops left: 1 Boost.Test WARNING: token ""all"" does not correspond to the Boost.Test argument and should be placed after all Boost.Test arguments and the -- separator. For example: demo_test --random -- all Boost.Test WARNING: token ""all"" does not correspond to the Boost.Test argument and should be placed after all Boost.Test arguments and the -- separator. For example: demo_test --random -- all Running 1 test case... *** No errors detected Claus-MBP:AgentProV4 clausklein$ ./demo_test --random --run_test=QueuedThreadPoolLoad_test -2 loops requested: 2 0: ./demo_test 1: --random 2: --run_test=QueuedThreadPoolLoad_test Running 1 test case... *** No errors detected 0: ./demo_test 1: --random 2: --run_test=QueuedThreadPoolLoad_test loops left: 1 Running 1 test case... *** No errors detected Claus-MBP:AgentProV4 clausklein$ ./demo_test -i 0: ./demo_test 1: -i Running 1 test case... Platform: Mac OS Compiler: Clang version 8.0.0 (clang-800.0.42.1) STL : libc++ version 3700 Boost : 1.65.1 *** No errors detected Claus-MBP:AgentProV4 clausklein$ }}}" claus.klein@… 13227 exception.hpp : disable false warning C4265 given by Visual Studio exception Boost 1.64.0 To Be Determined Bugs Emil Dotchevski new 2017-09-21T18:30:26Z 2017-09-21T18:30:26Z "Hi, MSVC falsely report a missing virtual destructor inside exception.hpp Would it be possible to add a ""pragma warning (disable:4265)"" in this file ? This will *not* happen with the default settings of Visual Studio : it happens when trying to raise the warning level (/we4265 : treat ""misssing virtual destructor"" as an error) Steps to reproduce the problem : - Compile the following program: {{{ #include #include #include int main(int argc, char **argv) { boost::optional name; if (argc > 1) name.reset(argv[1]); if (name.is_initialized()) std::cout << ""Hello, "" << name.get() << ""\n""; else std::cout << ""Hello, world \n""; return 0; } }}} - With the following command line : {{{ cl hello.cpp /Iboost_1_64_0 /EHa /W3 /we4265 }}} outputs {{{ c:\tmp>cl hello.cpp /Iboost_1_64_0 /EHa /W3 /we4265 Microsoft (R) C/C++ Optimizing Compiler Version 19.00.24215.1 for x86 Copyright (C) Microsoft Corporation. All rights reserved. hello.cpp boost_1_64_0\boost/exception/exception.hpp(176): error C4265: 'boost::exception_detail::error_info_container': class has virtual functions, but destructor is not virtual instances of this class may not be destructed correctly }}} For more details, please also refer to https://github.com/ivsgroup/boost_warnings_minimal_demo The problem occurs with boost 1.64 and 1.62. Thanks & regards ! " Pascal Thomet 13225 operator != fails in classes derived from boost::rational rational Boost 1.64.0 To Be Determined Bugs Jonathan Turkanis new 2017-09-21T14:47:48Z 2017-09-21T14:47:48Z "In a class derived from boost::rational operator != seems to return ""false"" always. {{{ #include #include struct RationalNumber : public boost::rational { RationalNumber(int n, int d) : boost::rational(n, d) {} }; using namespace std; template void check() { T r(2, 3); T q(2, 3); T s(2, 4); cout << (r!=q) << "" "" << (r!=s) << endl; } int main() { check>(); // works cout << ""---------------"" << endl; check(); // fails for boost version > 1_63_0 return 0; } }}} Bug appears since boost version 1_64_0 and is present in current development trunk (git repository on 20170921) still. " Michael Hanrath 13224 Error compiling odeint with nvcc CUDA 9 error in ublas odeint Boost 1.65.0 To Be Determined Bugs karsten new 2017-09-21T12:44:14Z 2018-01-02T09:30:17Z "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(640): warning: invalid friend declaration C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(1418): warning: invalid friend declaration C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(2780): warning: invalid friend declaration C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(640): warning: invalid friend declaration C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(1418): warning: invalid friend declaration C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(2780): warning: invalid friend declaration C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(640): error C2039: 'iterator': is not a member of 'boost::numeric::ublas' C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(37): note: see declaration of 'boost::numeric::ublas' C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(641): note: see reference to class template instantiation 'boost::numeric::ublas::vector::const_iterator ' being compiled C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(826): note: see reference to class template instantiation 'boost::numeric::ublas::vector' being compiled C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(1418): error C2039: 'iterator': is not a member of 'boost::numeric::ublas' C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(37): note: see declaration of 'boost::numeric::ublas' C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(1419): note: see reference to class template instantiation 'boost::numeric::ublas::fixed_vector::const_iterator' being compiled C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(1604): note: see reference to class template instantiation 'boost::numeric::ublas::fixed_vector' being compiled C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(2780): error C2039: 'iterator': is not a member of 'boost::numeric::ublas' C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(37): note: see declaration of 'boost::numeric::ublas' C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(2781): note: see reference to class template instantiation 'boost::numeric::ublas::c_vector::const_iterator' being compiled C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(2950): note: see reference to class template instantiation 'boost::numeric::ublas::c_vector' being compiled" jorge_221@… 13222 Documentation for header-only libraries inaccurate Documentation Boost 1.65.0 To Be Determined Bugs Matias Capeletto new 2017-09-21T09:00:25Z 2017-09-21T09:02:27Z "The documentation at http://www.boost.org/doc/libs/1_65_1/more/getting_started/unix-variants.html#header-only-libraries lists the libraries which must be be compiled separately. Executing the following on the command line > ./bootstrap.sh --show-libraries however, produces a different list (see below). It seems the docu is missing the libraries: ''atomic, container, coroutine, fiber, metaparse, stacktrace and type_erasure'' which I suggested should be added to the (html) documentation > ./bootstrap.sh --show-libraries The Boost libraries requiring separate building and installation are: - atomic - chrono - container - context - coroutine - date_time - exception - fiber - filesystem - graph - graph_parallel - iostreams - locale - log - math - metaparse - mpi - program_options - python - random - regex - serialization - signals - stacktrace - system - test - thread - timer - type_erasure - wave " Declan Moran 13218 Xcode 8/9 static analyzer warning in socket_ops.ipp:2023:5: function 'strcat' is insecure. CWE-119 asio Boost 1.65.0 To Be Determined Bugs chris_kohlhoff new 2017-09-19T21:03:31Z 2017-09-19T21:03:31Z "The warning generated on macOS by the Xcode 9 static analyzer for files that #include asio.hpp is: In file included from /mnt/boost/asio.hpp:21: In file included from /mnt/boost/asio/basic_datagram_socket.hpp:21: In file included from /mnt/boost/asio/datagram_socket_service.hpp:30: In file included from /mnt/boost/asio/detail/reactive_socket_service.hpp:30: In file included from /mnt/boost/asio/detail/reactive_socket_accept_op.hpp:24: In file included from /mnt/boost/asio/detail/socket_holder.hpp:20: In file included from /mnt/boost/asio/detail/socket_ops.hpp:333: /mnt/boost/asio/detail/impl/socket_ops.ipp:2023:5: warning: Call to function 'strcat' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcat'. CWE-119 Since a lot of our files include asio.hpp, we see this warning over and over again. And unfortunately I know of no way to suppress this issue, so I'm hoping you can adjust the implementation to use strlcpy. Some of the other layers in Boost seem to have done this already, so maybe you don't have to re-invent the wheel." mark_hastings@… 13217 remove_all(const path& p, system::error_code& ec) is not supposed to throw filesystem_error, but still can filesystem Boost 1.64.0 To Be Determined Bugs Beman Dawes new 2017-09-19T20:17:47Z 2018-05-10T10:57:57Z "I will be submitting a github pull request in association with this ticket. According to the documentation, uintmax_t remove_all(const path& p, system::error_code& ec) is not supposed to throw filesystem_error. However, when the directory_iterator used in the loop inside the implementation helper function remove_all_aux() is incremented, it's not done in a way that considers the ec argument. So, when incrementing the iterator fails, the operator++() on the directory_iterator throws, which leads to remove_all() incorrectly throwing. To fix this, it seems that one can take the same approach as the recent changes for Fix #7307 (commit 4e4374336c640c2717f6a1b168406e11bdf7d6f1) and replace the ++itr call in the loop with an explicit call to either directory_iterator::increment(system::error_code& ec) whenever an ec argument is in effect. This should prevent remove_all() from throwing in such cases and thus allow it to conform to its interface specification. BTW I also found these possibly related tickets in Trac: * #10380 * #12640 " Brad Spencer 13216 Failed to build Boost.Build engine build Boost 1.63.0 To Be Determined Bugs Vladimir Prus new 2017-09-19T15:48:26Z 2018-05-10T10:57:25Z "Failed to build Boost.Build engine. I'm trying to build 1.64 boost in VSC2017 " anonymous 13215 Polygon union give a different result depending of the order geometry Boost 1.66.0 To Be Determined Bugs Barend Gehrels new 2017-09-18T16:02:20Z 2017-09-25T15:57:02Z "I found a precision issue with union between polygons and the result vary depending of the order. We add consecutive polygons to a multi-polygon that contains the previous result. The union of polygons (that have only one outer contour) in the following order give an empty union: {{{ Polygon[(-5.180416107177734375,0.46142292022705078125),(-2.6576340198516845703125,0.46142292022705078125),(-2.6576340198516845703125,4.818223476409912109375),(-2.6576340198516845703125,7.19262790679931640625),(-7.35814762115478515625,7.19262790679931640625),(-7.35814762115478515625,4.818223476409912109375),(-7.35814762115478515625,0.46142292022705078125)] Polygon[(-7.35814762115478515625,-1.8333890438079833984375),(-7.35814762115478515625,-5.162303924560546875),(-3.343097686767578125,-5.162303924560546875),(-3.3430979251861572265625,-1.19531953334808349609375),(-3.343098163604736328125,0.4614227116107940673828125),(-2.6576340198516845703125,0.4614226818084716796875),(-2.6576340198516845703125,4.79442691802978515625),(-5.180416107177734375,4.79442691802978515625),(-7.35814762115478515625,4.79442691802978515625),(-7.35814762115478515625,0.46142292022705078125)] Polygon[(4.4465618133544921875,-5.162303924560546875),(4.4465618133544921875,-1.195319652557373046875),(3.5822856426239013671875,-1.195319652557373046875),(-3.3430979251861572265625,-1.19531953334808349609375),(-3.343097686767578125,-5.162303924560546875)] Polygon[(3.5822856426239013671875,-1.195319652557373046875),(3.5822856426239013671875,0.4614227116107940673828125),(-2.6576340198516845703125,0.4614226818084716796875),(-3.343098163604736328125,0.4614227116107940673828125),(-3.3430979251861572265625,-1.19531953334808349609375)] Polygon[(-0.0815036296844482421875,-5.162303924560546875),(-0.0815036296844482421875,-4.110321521759033203125),(-2.6576340198516845703125,-4.110321521759033203125),(-2.6576340198516845703125,-5.162303924560546875)] Polygon[(-0.0815036296844482421875,0.46142292022705078125),(-2.6576340198516845703125,0.46142292022705078125),(-2.6576340198516845703125,-0.438062191009521484375),(-0.0815036296844482421875,-0.438062191009521484375)] Polygon[(-2.6576340198516845703125,0.46142292022705078125),(-2.6576340198516845703125,-0.438062191009521484375),(-2.6576340198516845703125,-4.110321521759033203125),(-2.6576340198516845703125,-5.162303924560546875),(-0.0815036296844482421875,-5.162303924560546875),(-0.0815036296844482421875,-4.110321521759033203125),(-0.0815036296844482421875,-0.438062191009521484375),(-0.0815036296844482421875,0.46142292022705078125)] }}} Same polygons in a different order give the expected result: {{{ Polygon[(4.4465618133544921875,-5.162303924560546875),(4.4465618133544921875,-1.195319652557373046875),(3.5822856426239013671875,-1.195319652557373046875),(-3.3430979251861572265625,-1.19531953334808349609375),(-3.343097686767578125,-5.162303924560546875)] Polygon[(-2.6576340198516845703125,0.46142292022705078125),(-2.6576340198516845703125,-0.438062191009521484375),(-2.6576340198516845703125,-4.110321521759033203125),(-2.6576340198516845703125,-5.162303924560546875),(-0.0815036296844482421875,-5.162303924560546875),(-0.0815036296844482421875,-4.110321521759033203125),(-0.0815036296844482421875,-0.438062191009521484375),(-0.0815036296844482421875,0.46142292022705078125)] Polygon[(-0.0815036296844482421875,-5.162303924560546875),(-0.0815036296844482421875,-4.110321521759033203125),(-2.6576340198516845703125,-4.110321521759033203125),(-2.6576340198516845703125,-5.162303924560546875)] Polygon[(3.5822856426239013671875,-1.195319652557373046875),(3.5822856426239013671875,0.4614227116107940673828125),(-2.6576340198516845703125,0.4614226818084716796875),(-3.343098163604736328125,0.4614227116107940673828125),(-3.3430979251861572265625,-1.19531953334808349609375)] Polygon[(-0.0815036296844482421875,0.46142292022705078125),(-2.6576340198516845703125,0.46142292022705078125),(-2.6576340198516845703125,-0.438062191009521484375),(-0.0815036296844482421875,-0.438062191009521484375)] Polygon[(-7.35814762115478515625,-1.8333890438079833984375),(-7.35814762115478515625,-5.162303924560546875),(-3.343097686767578125,-5.162303924560546875),(-3.3430979251861572265625,-1.19531953334808349609375),(-3.343098163604736328125,0.4614227116107940673828125),(-2.6576340198516845703125,0.4614226818084716796875),(-2.6576340198516845703125,4.79442691802978515625),(-5.180416107177734375,4.79442691802978515625),(-7.35814762115478515625,4.79442691802978515625),(-7.35814762115478515625,0.46142292022705078125)] Polygon[(-5.180416107177734375,0.46142292022705078125),(-2.6576340198516845703125,0.46142292022705078125),(-2.6576340198516845703125,4.818223476409912109375),(-2.6576340198516845703125,7.19262790679931640625),(-7.35814762115478515625,7.19262790679931640625),(-7.35814762115478515625,4.818223476409912109375),(-7.35814762115478515625,0.46142292022705078125)] }}} The result: {{{ Polygon[(-0.0815036296844482421875,-5.162303924560546875),(-0.0815036296844482421875,-4.110321521759033203125),(-2.6576340198516845703125,-4.110321521759033203125),(-2.6576340198516845703125,-5.162303924560546875)] }}} Notes: 1. We use float 2. This issue happens with mingw32, when tested with Visual 2015 (32bits compilation too) everything is good. Both compiler are used with default options for float precision strategy. 3. Prints are made with ""%.64g"" format option of printf to avoid financial round. 4. Those polygons are counter clockwise and open, but I also test them reversed and close, it gives the same result." flamaros.xavier@… 13214 Boost::process examples fail to compile in Visual studio 2012 Win 7 process Boost 1.64.0 To Be Determined Bugs new 2017-09-18T15:25:10Z 2018-05-10T10:57:03Z "This ticket is related to [https://svn.boost.org/trac10/ticket/12990 #12990], as the compatibility of boost::process is broken with Visual Studio 2012 too. The problem is due to several features of C++11 - C++17 that break the compatibility with VS2012 : - noexcept in process/detail/config.hpp (easy to substitute with BOOST_NOEXCEPT) - constexpr in process/detail/config.hpp and process/detail/handler_base.hpp - using resource_type = void in process/detail/handler_base.hpp - #include in process/detail/traits/cmd_or_exe.hpp (this feature is available in VS2013) " daniele.trimarchi@… 13210 Signed integer overflow in successive_shortest_path_nonnegative_weights() graph Boost Development Trunk To Be Determined Bugs Jeremiah Willcock new 2017-09-13T20:33:09Z 2017-09-13T20:33:09Z "Buiding and running the following program with UndefinedBehaviorSanitizer will generate a report on signed integer overflow error: {{{ #include #include #include #include using namespace boost; using Traits = adjacency_list_traits; using Graph = adjacency_list< vecS, vecS, directedS, no_property, property>>>>; template void fill_capacity(Map &m, Edge e, Edge er, int c) { put(m, e, c); put(m, er, 0); } template void fill_rev(Map &m, Edge e, Edge er) { put(m, e, er); put(m, er, e); } template void fill_weight(Map &m, Edge e, Edge er, int w) { put(m, e, w); put(m, er, -w); } int main() { Graph g(4); auto capacity = get(edge_capacity, g); auto rev = get(edge_reverse, g); auto weight = get(edge_weight, g); auto e0 = add_edge(0, 1, g).first; auto e0r = add_edge(1, 0, g).first; auto e1 = add_edge(0, 2, g).first; auto e1r = add_edge(2, 0, g).first; auto e2 = add_edge(1, 2, g).first; auto e2r = add_edge(2, 1, g).first; // What the weights and capacities are don't really matter as long as they are all positive fill_capacity(capacity, e0, e0r, 1); fill_capacity(capacity, e1, e1r, 1); fill_capacity(capacity, e2, e2r, 1); fill_rev(rev, e0, e0r); fill_rev(rev, e1, e1r); fill_rev(rev, e2, e2r); fill_weight(weight, e0, e0r, 1); fill_weight(weight, e1, e1r, 1); fill_weight(weight, e2, e2r, 1); successive_shortest_path_nonnegative_weights(g, 0, 2); } }}} Here's the stacktrace collected by UBSan (simplified for readability): {{{ /usr/include/boost/graph/successive_shortest_path_nonnegative_weights.hpp:104:57: runtime error: signed integer overflow: 2147483647 + 2147483647 cannot be represented in type 'int' #0 0x43fccd in void boost::successive_shortest_path_nonnegative_weights<...>(...) /usr/include/boost/graph/successive_shortest_path_nonnegative_weights.hpp:104:57 #1 0x43d7dc in void boost::detail::successive_shortest_path_nonnegative_weights_dispatch3<...>(...) /usr/include/boost/graph/successive_shortest_path_nonnegative_weights.hpp:148:5 #2 0x43bf40 in void boost::detail::successive_shortest_path_nonnegative_weights_dispatch2<...>(...) /usr/include/boost/graph/successive_shortest_path_nonnegative_weights.hpp:186:5 #3 0x43b2ba in void boost::detail::successive_shortest_path_nonnegative_weights_dispatch1<...>(...) /usr/include/boost/graph/successive_shortest_path_nonnegative_weights.hpp:223:5 #4 0x43b018 in void boost::successive_shortest_path_nonnegative_weights, int, boost::buffer_param_t, boost::no_property>(...) /usr/include/boost/graph/successive_shortest_path_nonnegative_weights.hpp:238:12 #5 0x42b046 in void boost::successive_shortest_path_nonnegative_weights<...>(boost::adjacency_list<...>&, boost::graph_traits<...>::vertex_descriptor, boost::graph_traits<...>::vertex_descriptor) /usr/include/boost/graph/successive_shortest_path_nonnegative_weights.hpp:255:5 #6 0x42a520 in main /home/grieve/Research/Testing/boost/reduced.cpp:56:3 #7 0x7f7cb22e3f69 in __libc_start_main (/usr/lib/libc.so.6+0x20f69) #8 0x4039b9 in _start (/home/grieve/Research/Testing/boost/reduced+0x4039b9) }}} The problem here is that function successive_shortest_path_nonnegative_weights() does not take into account the fact that its input graph might be disconnected and therefore it is possible for some shortest path distances to be infinity." grievejia@… 13209 erdos_renyi_iterator hangs when n is 1 graph Boost Development Trunk To Be Determined Bugs Jeremiah Willcock new 2017-09-13T18:04:15Z 2017-09-13T18:04:15Z "Running the following program would result in an infinite loop: {{{ #include #include #include using Graph = boost::adjacency_list<>; using ERGen = boost::erdos_renyi_iterator; int main() { std::mt19937 gen; int n = 1; Graph g(ERGen(gen, n, 0.5), ERGen(), n); } }}} This is caused by the while loop inside erdos_renyi_iterator::next(). If n is 1 and allow_self_loops is false, the loop condition will be true forever. A simple change that makes an early exit for the n=1 case would fix the problem. " grievejia@… 13208 Make boost::optional trivially destructible, copyable and movable if T is optional To Be Determined Feature Requests Fernando Cacciola new 2017-09-13T09:59:39Z 2017-09-13T09:59:39Z "Conceptually there's nothing preventing {{{boost::optional}}} from being trivially destructible, copyable and movable if T is. This could be useful, for instance, to use an {{{boost::optional}}} as a union-member. I have a POC implementation based on Boost 1.64 [https://github.com/z33ky/trivial_optional/blob/master/optional.hpp here]. \\ I moved {{{m_storage}}} and {{{m_initialized}}} to a new {{{class optional_storage}}}, representing the new base class. Some methods managing those members are move there as well. {{{optional_base}}} indirectly inherits from {{{optional_storage}}} through {{{optional_destroyer}}}, {{{optional_mover}}} and {{{optional_copier}}}, which are templated classes including a boolean parameter to determine whether {{{T}}} is trivially destructible, movable and copyable and use template specialization to provide the respective trivial members. \\ The implementation relies on defaulting constructors, so without C++11 or newer only trivial destruction is possible." 1zeeky@… 13207 boost::spirit::istream_iterator unusable with boost::asio::ip::tcp::iostream spirit Boost 1.65.0 To Be Determined Bugs Joel de Guzman new 2017-09-13T01:27:53Z 2017-09-17T00:23:08Z "Hi, I'm really looking forward to using boost::spirit in my next project. Unfortunately, I seem to have hit a roadblock in that the boost::spirit::istream_iterator constructor completely locks up when it is passed a boost::asio::ip::tcp::iostream reference. I come from a (much stronger) C background, so perhaps I'm missing the greater picture, but in the ""spirit"" of a C++ stream-based API, I would have thought that any input stream would work with spirit's forward iterator - at least that's how I interpreted the documentation. A really simple example is the following: {{{ #include #include #include int main( int argc, char *argv[] ) { static const int port = 443; if ( 2 != argc ) { std::cout << ""usage: "" << argv[ 0 ] << "" "" << std::endl; std::cout << std::endl; std::cout << ""where is e.g. www.google.ca"" << std::endl; return 0; } std::string fqdn( argv[ 1 ] ); std::cout << ""creating fds.."" << std::endl; boost::asio::ip::tcp::iostream fds( fqdn, std::to_string( port ) ); if ( ! fds ) { std::cerr << ""unable to create fds: "" << fds.error().message() << std::endl; return 1; } std::cout << ""creating istream_iterator.."" << std::endl; boost::spirit::istream_iterator begin( fds ); std::cout << ""created istream_iterator!"" << std::endl; return 0; } }}} Compile with g++ -std=c++14 -o foo foo.cpp -lboost_system Any thoughts?" Christoper Friedt 13206 regex constructor throws regex_error for simple expression regex Boost 1.65.0 To Be Determined Bugs John Maddock new 2017-09-12T12:01:45Z 2017-10-12T21:26:05Z "The code below throws boost::regex_error when creating an instance of boost::regex. I compile with visual studio 2015 and uses boost 1.65 precompiled for 32 bit windows (boost_1_65_1-msvc-14.0-32.exe) #include ""stdafx.h"" #include int main() { try { boost::regex re(""[A-Z-.]+""); } catch (...) { assert(false); } return 0; } " Asbjørn Pedersen 13205 Suurballe's algorithm for finding two edge disjoint paths in non-negatively weighted graphs would be a great addition to BGL graph Boost Release Branch To Be Determined Feature Requests Jeremiah Willcock new 2017-09-11T11:43:34Z 2017-09-11T11:43:34Z "Suurballe's algorithm is used to find two edge disjoint paths in non-negatively weighted graphs. This is a often occuring problem when dealing with telecommunication networks, due to resilience constrains. The addition to the BGL tookit would be greatly appreciated (even if the algorithm is not terribly difficult to implement). " tobiaskussel@… 13204 Warning when compiling with -Wdeprecated-dynamic-exception-spec in clang smart_ptr Boost 1.65.0 To Be Determined Bugs Peter Dimov new 2017-09-09T23:44:29Z 2017-09-09T23:44:29Z " When compiling with -Wdeprecated-dynamic-exception-spec in clang we get the following warning {{{ /xxx/modular-boost3/boost/smart_ptr/bad_weak_ptr.hpp:50:39: error: dynamic exception specifications are deprecated [-Werror,-Wdeprecated-dynamic-exception-spec] virtual char const * what() const throw() ^~~~~~~ /Users/viboes/github/modular-boost3/boost/smart_ptr/bad_weak_ptr.hpp:50:39: note: use 'noexcept' instead virtual char const * what() const throw() ^~~~~~~ noexcept 1 error generated. }}} I don't know if using instead BOOST_NOEXCEPT_OR_NOTHROW is correct and should resolve the issue." viboes 13203 adjacent_filtered lets the first element entry through range Boost Development Trunk To Be Determined Bugs Neil Groves new 2017-09-09T20:40:01Z 2017-09-09T20:40:01Z "`adjacent_filtered` always lets the first element of the range leak through, even for a predicate that rejects that element as either argument. Eg. {{{ #!cpp int main() { const std::vector a = { 0, 1, 2, 3, 4, 5 }; auto b = a | boost::adaptors::adjacent_filtered( [] (const int &x, const int &y) { return ( ( x > 2 ) && ( y > 2 ) ); } ); for (const auto &x : b) { std::cerr << x << ""\n""; } } }}} …outputs: {{{ 0 4 5 }}} From what I can see in the code, the predicate is currently only applied in the `increment()` function, which leaves it too late for the first element to be checked. " Tony Lewis 13202 adjacent_filtered postcondition docs differ from behaviour range Boost Development Trunk To Be Determined Bugs Neil Groves new 2017-09-09T20:29:26Z 2017-09-09T20:29:26Z "I think the documentation for `adjacent_filtered`'s postcondition, ie: > For all adjacent elements `[x,y]` in the returned range, `bi_pred(x,y)` is `true`. …isn't quite right. For example, this: {{{ #!cpp #include #include #include int main() { const std::vector a = { 0, 1, 2, 3, 4, 5, 6 }; const auto b = a | boost::adaptors::adjacent_filtered( [] (const int &x, const int &y) { return ( y % 2 == 1 ) && ( y == x + 1 ); } ); for (const auto &x : b) { std::cerr << x << ""\n""; } } }}} …outputs: {{{ 0 1 3 5 }}} Yet two of the pairs of adjacent elements `[x,y]` in this range fail `bi_pred(x,y)` (because they differ by 2, not 1). I think it's more like: `bi_pred` is true on each element in the returned range preceded by the element that preceded it in the //original// range (not in the //returned// range)." Tony Lewis 13201 boost::container::small_vector invalid internal capacity container Boost 1.65.0 To Be Determined Bugs Ion Gaztañaga new 2017-09-09T02:29:48Z 2017-09-09T02:29:48Z "Sometimes the internal capacity of the small_vector is smaller than the specified. Take the following example: {{{ #include #include int main() { boost::container::small_vector v{ 0 }; boost::container::small_vector v2(15); std::cout << &v << ' ' << (void*)&v[0] << ' ' << v.capacity() << ' ' << decltype(v)::static_capacity << '\n'; std::cout << &v2 << "" "" << (void*)&v2[0] << ' ' << v2.capacity() << ' ' << decltype(v2)::static_capacity << '\n'; } }}} Output on amd64 linux (with clang 4.0.1, but gcc exhibits the same behavior): {{{ 0x7ffe053c4700 0x7ffe053c4718 8 15 0x7ffe053c46c8 0xbbfc20 23 15 }}} On 32-bit (-m32): {{{ 0xffdfecb0 0xffdfecbc 12 15 0xffdfec88 0x86aea10 27 15 }}} Even though the capacity should be 15, it's 8 on 64-bit and 12 on 32-bit, while static_capacity reports 15. When actually trying to put 15 elements into the vector, it allocates memory from heap. " DirtY.iCE.hu@… 13200 test_new_operator, develop branch, test '(2 == T::m_new_calls)' failed serialization Boost Development Trunk To Be Determined Bugs Robert Ramey new 2017-09-08T21:35:14Z 2017-09-08T21:35:14Z "Seeing this failure in libs/serialization, develop branch: {{{ libs/serialization/test/test_new_operator.cpp(126): test '(2 == T::m_new_calls)' failed in function 'int test() [with T = ANew]' libs/serialization/test/test_new_operator.cpp(134): test '(2 == T::m_new_calls)' failed in function 'int test() [with T = ANew]' libs/serialization/test/test_new_operator.cpp(126): test '(2 == T::m_new_calls)' failed in function 'int test() [with T = ANew1]' libs/serialization/test/test_new_operator.cpp(134): test '(2 == T::m_new_calls)' failed in function 'int test() [with T = ANew1]' }}} Example build jobs showing the issue for which the local changes I made would not be relevant, I tweaked the travis CI build job to run more variants and platforms: https://travis-ci.org/jeking3/serialization/builds/273445288 " James E. King, III 13199 execvpe has not been declared process Boost 1.64.0 To Be Determined Bugs new 2017-09-08T13:34:20Z 2017-09-08T13:34:20Z "According to [https://linux.die.net/man/3/execvpe man] execvpe was introduced only since GLIBC v2.11. Attaching patch for boost/process/detail/posix/executor.hpp with more accurate GLIBC check" slobodyanukma@… 13198 breadth_first_visit crashes on graphs where VertexLists is vecS graph Boost 1.63.0 To Be Determined Bugs Jeremiah Willcock new 2017-09-07T17:04:06Z 2017-09-07T17:04:29Z "breadth_first_search crashes if VertexLists is vecS. A minimal example is as follows: {{{ #!div style=""font-size: 80%"" Code highlighting: {{{#!cpp #include #include #include typedef boost::adjacency_list> GraphType; int main() { using namespace boost; GraphType g; auto a = add_vertex(g); auto b = add_vertex(g); auto c = add_vertex(g); add_edge(a, b, g); add_edge(b, c, g); add_edge(c, a, g); typedef boost::property_map::type color_map_t; color_map_t colorMap; //Create a color map boost::breadth_first_visit(g, *boost::vertices(g).first, boost::color_map(colorMap)); GraphType::vertex_iterator it, itEnd; for (boost::tie(it, itEnd) = boost::vertices(g); it != itEnd; it++) { std::cout << ""Color of node "" << *it << "" is "" << colorMap[*it] << std::endl; } } }}} The backtrace: {{{ #0 0x0000555555556d70 in std::vector, boost::no_property, boost::no_property, boost::listS>, boost::vecS, boost::vecS, boost::undirectedS, boost::property, boost::no_property, boost::no_property, boost::listS>::config::stored_vertex, std::allocator, boost::no_property, boost::no_property, boost::listS>, boost::vecS, boost::vecS, boost::undirectedS, boost::property, boost::no_property, boost::no_property, boost::listS>::config::stored_vertex> >::operator[] (this=0x18, __n=0) at /usr/include/c++/6/bits/stl_vector.h:781 #1 0x0000555555556674 in boost::vec_adj_list_vertex_property_map, boost::no_property, boost::no_property, boost::listS>, boost::adjacency_list, boost::no_property, boost::no_property, boost::listS>*, boost::default_color_type, boost::default_color_type&, boost::vertex_color_t>::operator[] (this=0x7fffffffcb60, v=0) at /usr/include/boost/graph/detail/adjacency_list.hpp:2510 #2 0x0000555555558451 in boost::put, boost::no_property, boost::no_property, boost::listS>, boost::adjacency_list, boost::no_property, boost::no_property, boost::listS>*, boost::default_color_type, boost::default_color_type&, boost::vertex_color_t>, boost::default_color_type&, unsigned long, boost::default_color_type> (pa=..., k=0, v=@0x7fffffffcbcc: boost::gray_color) at /usr/include/boost/property_map/property_map.hpp:309 #3 0x00005555555577b6 in boost::breadth_first_visit, boost::no_property, boost::no_property, boost::listS>, boost::queue > >, boost::bfs_visitor, boost::vec_adj_list_vertex_property_map, boost::no_property, boost::no_property, boost::listS>, boost::adjacency_list, boost::no_property, boost::no_property, boost::listS>*, boost::default_color_type, boost::default_color_type&, boost::vertex_color_t>, unsigned long*> ( g=..., sources_begin=0x7fffffffcd28, sources_end=0x7fffffffcd30, Q=..., vis=..., color=...) at /usr/include/boost/graph/breadth_first_search.hpp:75 #4 0x0000555555556c6b in boost::breadth_first_visit, boost::no_property, boost::no_property, boost::listS>, boost::queue > >, boost::bfs_visitor, boost::vec_adj_list_vertex_property_map, boost::no_property, boost::no_property, boost::listS>, boost::adjacency_list, boost::no_property, boost::no_property, boost::listS>*, boost::default_color_type, boost::default_color_type&, boost::vertex_color_t> > (g=..., s=0, Q=..., vis=..., color=...) at /usr/include/boost/graph/breadth_first_search.hpp:104 #5 0x00005555555564a0 in boost::breadth_first_visit, boost::no_property, boost::no_property, boost::listS>, boost::vec_adj_list_vertex_property_map, boost::no_property, boost::no_property, boost::listS>, boost::adjacency_list, boost::no_property, boost::no_property, boost::listS>*, boost::default_color_type, boost::default_color_type&, boost::vertex_color_t>, boost::vertex_color_t, boost::no_property> (g=..., s=0, params=...) at /usr/include/boost/graph/breadth_first_search.hpp:370 #6 0x0000555555555cce in main () at test.cpp:24 }}} Changing `vecS` to `listS` resolves the issue, but I don't think anywhere in the doc mentions that `vecS` cannot be used." hong@… 13196 buffer produces incorrect corners from linestring with asymmetric distance strategy geometry Boost 1.65.0 To Be Determined Bugs Barend Gehrels new 2017-09-07T11:19:22Z 2017-09-07T11:26:17Z "buffer() creates incorrect corners, when used on a linestring with an asymmetric distance strategy and the join_miter strategy. This happens when the ""inner"" distance is bigger than the ""outer"" distance. See the attached images for the result and the expected result. " jan.kleemann@… 13195 Parsing a local_date_time with a custom decimal point does not work date_time Boost 1.65.0 To Be Determined Bugs az_sw_dude new 2017-09-05T18:43:05Z 2017-09-05T18:43:05Z "local_time_input_facet does not conform to the decimal point specified in the locale. Note that printing with the help of local_time_facet ''does'' work. See attached file. Tested on Boost 1.58 and 1.65 " Sylvain Rosembly 13193 multiple sockets (reuse_address) + multiple io_service = packages never received asio Boost 1.63.0 To Be Determined Bugs chris_kohlhoff new 2017-09-05T14:29:28Z 2017-09-05T14:36:31Z "In example program, we open several UDP sockets (each on same address/port - with reuse_address), and they use several io_service. The result is that async_receive_from never reads any data. 1) N sockets (same addr/port), using N various io_service - doe not work 2) N sockets (each own port), using N various io_service - works 3) N sockets (same addr/port), but using same 1 io_service - works 4) 1 socket - works The full test case is in github: https://github.com/rfree-d/cppfuns/tree/79093a5458867ddbf0d36f0170a78465194370a4/asio_udp_srv if you run ""make run"" then program starts using ""mport"" option - each socket gets own port (so no need for the reuse flag) - and program works fine. if you run ""make run_bug"" then it is started without the ""mport"" and all sockets listen on port 9000 - and then the program does not work if you run the binary with no options then it shows usage (or grep sources for 'options'). You can test program by sending data to UDP 9000 localhost, or just build test program in other directory up: https://github.com/rfree-d/cppfuns/tree/79093a5458867ddbf0d36f0170a78465194370a4/asio_udp_cli there ""make"", and run it with options like ""127.0.0.1 9000"" it is interactive, to send many data use: aaa 1000 100000 for big packet sent once use aaa 1000 1 to send one packet with string ""exit"" use exit 1 1 Tested on Linux Debian 8 and 9. " rafal2@… 13191 undefined reference error when ODR-using boost::ratio::{num,den} ratio Boost 1.59.0 To Be Determined Bugs viboes new 2017-09-04T16:27:37Z 2017-11-03T05:30:49Z anonymous 13190 Boost releases do not include boost/crc.hpp changes crc Boost 1.65.0 To Be Determined Bugs Daryle Walker new 2017-09-04T06:14:14Z 2017-09-04T06:14:14Z "boost/crc.hpp from boost github has a number of changes since at least 22 Dec 2011 that have not been included in any official boost release (up to at least Boost 1.65). Changes include useful corrections to errors in defining crc types (commits c0a10f5 and 328bf50)." dave@… 13189 copy throws exception from a function defined as noexcept filesystem Boost 1.63.0 To Be Determined Bugs Beman Dawes new 2017-09-03T13:08:12Z 2017-11-11T15:07:31Z "When {{{copy}}} fails because access to the file specified by {{{from}}} is denied, the corresponding exception reaches a function defined as {{{noexcept}}}. Stack trace: {{{ bool ::error(err_t error_num, const path& p1, const path& p2, error_code* ec, const char* message) void detail::copy_file(const path& from, const path& to, copy_option option, error_code* ec) void copy_file(const path& from, const path& to, BOOST_SCOPED_ENUM(copy_option) option, system::error_code& ec) BOOST_NOEXCEPT void detail::copy(const path& from, const path& to, system::error_code* ec) void copy(const path& from, const path& to) }}} The exception is thrown from {{{error}}}, and isn't caught anywhere along the calling path. The problem is that {{{copy_file}}} is defined as {{{noexcept}}} ({{{BOOST_NOEXCEPT}}} to be precise, but it is resolved as {{{noexcept}}} under a C++11 compliant compiler), and doesn't handle the exception either, which causes program termination by implicitly calling {{{std::terminate}}}." kukkerman@… 13188 VS2017 reports typecast error in two_bit_color_map.hpp graph Boost 1.65.0 To Be Determined Patches Jeremiah Willcock new 2017-09-01T19:36:23Z 2017-09-01T19:36:23Z "line 61 of boost/graph/two_bit_color_map.hpp, final parameter causes an int32 to unsigned char type conversion warning. Maybe resolved by changing line 61 to: std::fill(data.get(), data.get() + (n + elements_per_char - 1) / elements_per_char, static_cast(white_color)); " peter.johnson@… 13187 Getting Started guide has wrong information Documentation Boost 1.65.0 To Be Determined Bugs Matias Capeletto new 2017-09-01T13:38:14Z 2018-05-10T10:51:38Z "On the page http://www.boost.org/doc/libs/1_65_0/more/getting_started/windows.html under section 1 there is a download link. In Section 2 it mentions a directory structure and claims that there is a ""lib"" dir in the boost root dir. However there is no ""lib"" dir with pre-compiled binaries, that only seems to be included with the Windows binary downloads and not in the file/download mentioned in Section 1. Might want to change the wording in the guide to match how things are now. Thanks! " anonymous 13186 Memory leak in serialization 1.65 serialization Boost 1.65.0 Boost 1.65.0 Bugs Robert Ramey new 2017-09-01T10:25:46Z 2018-06-22T01:17:59Z "Hi, we are seeing a seg fault seemingly caused by a difference between boost serialization 1.64 and 1.65 (no problems in 1.64 or any other boost we are currently testing >1.48 as part of Chaste computational physiology library). Unfortunately the minimal failing test is a bit complicated I'm afraid, this only seems to show up with a hierarchy of serialization classes. I've attached valgrind memory testing output which should hopefully give all the clues needed to track it down: {{{ ==20488== Memcheck, a memory error detector ==20488== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. ==20488== Using Valgrind-3.10.1 and LibVEX; rerun with -h for copyright info ==20488== Command: mesh/build/debug_hostconfig,boost=1-65/TestNodesOnlyMeshRunner -malloc_debug -malloc_dump -memory_info ==20488== Parent PID: 20487 ==20488== ==20488== Invalid read of size 8 ==20488== at 0x7E55025: boost::serialization::typeid_system::extended_type_info_typeid_0::type_unregister() (in /home/robert/boost_1_65/lib/libboost_serialization.so.1.65.0) ==20488== by 0x4756E6: boost::serialization::extended_type_info_typeid >::~extended_type_info_typeid() (extended_type_info_typeid.hpp:96) ==20488== by 0x474F02: boost::serialization::singleton > >::get_instance()::singleton_wrapper::~singleton_wrapper() (in /home/garmir/workspace/Chaste/mesh/build/debug_hostconfig,boost=1-65/TestNodesOnlyMeshRunner) ==20488== by 0x9E2E1A8: __run_exit_handlers (exit.c:82) ==20488== by 0x9E2E1F4: exit (exit.c:104) ==20488== by 0x9E13F4B: (below main) (libc-start.c:321) ==20488== Address 0x17bd1740 is 32 bytes inside a block of size 40 free'd ==20488== at 0x4C2C2BC: operator delete(void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==20488== by 0x7E55572: boost::serialization::singleton > >::get_instance()::singleton_wrapper::~singleton_wrapper() (in /home/robert/boost_1_65/lib/libboost_serialization.so.1.65.0) ==20488== by 0x9E2E539: __cxa_finalize (cxa_finalize.c:56) ==20488== by 0x7E4D402: ??? (in /home/robert/boost_1_65/lib/libboost_serialization.so.1.65.0) ==20488== by 0x40108D9: _dl_fini (dl-fini.c:252) ==20488== by 0x9E2E1A8: __run_exit_handlers (exit.c:82) ==20488== by 0x9E2E1F4: exit (exit.c:104) ==20488== by 0x9E13F4B: (below main) (libc-start.c:321) ==20488== ==20488== Invalid read of size 8 ==20488== at 0x7E55036: boost::serialization::typeid_system::extended_type_info_typeid_0::type_unregister() (in /home/robert/boost_1_65/lib/libboost_serialization.so.1.65.0) ==20488== by 0x4756E6: boost::serialization::extended_type_info_typeid >::~extended_type_info_typeid() (extended_type_info_typeid.hpp:96) ==20488== by 0x474F02: boost::serialization::singleton > >::get_instance()::singleton_wrapper::~singleton_wrapper() (in /home/garmir/workspace/Chaste/mesh/build/debug_hostconfig,boost=1-65/TestNodesOnlyMeshRunner) ==20488== by 0x9E2E1A8: __run_exit_handlers (exit.c:82) ==20488== by 0x9E2E1F4: exit (exit.c:104) ==20488== by 0x9E13F4B: (below main) (libc-start.c:321) ==20488== Address 0x17bd1738 is 24 bytes inside a block of size 40 free'd ==20488== at 0x4C2C2BC: operator delete(void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==20488== by 0x7E55572: boost::serialization::singleton > >::get_instance()::singleton_wrapper::~singleton_wrapper() (in /home/robert/boost_1_65/lib/libboost_serialization.so.1.65.0) ==20488== by 0x9E2E539: __cxa_finalize (cxa_finalize.c:56) ==20488== by 0x7E4D402: ??? (in /home/robert/boost_1_65/lib/libboost_serialization.so.1.65.0) ==20488== by 0x40108D9: _dl_fini (dl-fini.c:252) ==20488== by 0x9E2E1A8: __run_exit_handlers (exit.c:82) ==20488== by 0x9E2E1F4: exit (exit.c:104) ==20488== by 0x9E13F4B: (below main) (libc-start.c:321) }}} Incidentally, the consequences are exactly the same as a problem that existed in boost 1.46 and was fixed in 1.48. I don't know if the underlying problem is related." anonymous 13185 serialization of null pointer fails in optimized builds serialization Boost Development Trunk To Be Determined Bugs Robert Ramey new 2017-08-31T23:18:18Z 2017-08-31T23:21:39Z "invoke in oserializer.hpp dereferences a pointer (UB for nullptrs), and then checks if it is null on the next line. The optimizer detects this UB and assumes the pointer cannot be null, and optimizes the whole if block out. This affected our code in production (serializing nullptrs was a corner case for us), so I assume it's affecting other folks. Here's a demo of clang trunk performing this optimization (earlier versions didn't perform this optimization): https://godbolt.org/g/y6sbZP https://github.com/boostorg/serialization/blob/6b33d1cd4e11daaf97612561ecd9d4848843897c/include/boost/archive/detail/oserializer.hpp#L468 {{{ template static void invoke(Archive &ar, const TPtr t){ register_type(ar, * t); if(NULL == t){ basic_oarchive & boa = boost::serialization::smart_cast_reference(ar); boa.save_null_pointer(); save_access::end_preamble(ar); return; } save(ar, * t); } }}} Modifying the code to this, works as expected (although there's still a dereference of a null): {{{ template static void invoke(Archive &ar, const TPtr t){ if(NULL == t){ register_type(ar, * t); basic_oarchive & boa = boost::serialization::smart_cast_reference(ar); boa.save_null_pointer(); save_access::end_preamble(ar); return; } else { register_type(ar, * t); } save(ar, * t); } }}} " tyler@… 13184 child move constructor does not set _terminated member process Boost 1.65.0 To Be Determined Bugs new 2017-08-31T15:45:35Z 2018-04-07T19:38:21Z In 'process/include/boost/process/detail/child_decl.hpp' child move constructor does not set '_terminated' member. helmet23 13183 boost wave fails to compile with Clang on Windows wave Boost 1.65.0 To Be Determined Bugs Hartmut Kaiser new 2017-08-31T10:09:12Z 2017-08-31T10:11:16Z "boost wave fails to compile with Clang on Windows, there are a lot of issues of type: \boost/wave/grammars/cpp_expression_grammar.hpp:829:18: error: case value evaluates to -804257404, which cannot be narrowed to type 'unsigned int' [-Wc++11-narrowing] case T_CPPCOMMENT: // contains newline" anonymous 13182 Boost.Fiber ignores lambda captures context Boost 1.65.0 Boost 1.65.0 Bugs olli new 2017-08-30T00:43:19Z 2017-08-31T10:02:15Z "In version 1.65, the following code doesn't work: boost::fibers::fiber([p=std::make_shared(""Hi"")]{ assert(p); }).detach(); This probably because when you call std::apply(std::move(fn_), std::move( arg_)) in function ""worker_context::run_"", should have used ""fn"" and ""arg"" instead of ""fn_"" and ""arg_"". Please look at ""boost\fiber\context.hpp"" line 428 " Sergey Babin 13180 Loop vectorisation using boost multi_array multi_array Boost 1.65.0 To Be Determined Support Requests Ronald Garcia new 2017-08-28T07:08:40Z 2017-08-28T07:08:40Z "Dear all I am trying to optimize a huge code that uses boost multi-arrays. And when I compile the code with the ''-qopt-report=2 -qopt-report-phase=vec'' options, I notice in the compilation report that most loops are not vectorized. I thus made a simple program to understand why, and I noticed that a loop that uses C array is vectorized, while the same loop using boost multi array is not (see test_vector.cpp) (see attached .cpp file). I get the following message: {{{ LOOP BEGIN at test_vector.cpp(29,5) remark #15520: loop was not vectorized: loop with multiple exits cannot be vectorized unless it meets search loop idiom criteria LOOP END }}} A way to overcome this would be to use the data pointer in combination with the {{{#pragma ivdep}}} statement, but this becomes complicated when working on multimensional arrays. I thus would like to know if I am doing something wrong (for instance in the boost array initialisation), and if there is a way to fix this? I am using the icpc compiler, version 16.0.4, with boost library version 1.65. The program is compiled as follows: {{{ icpc -Ilibs/cpp/boost_1_65_0/ -O3 -qopt-report=2 -qopt-report-phase=vec test_vector.cpp }}} Thanks a lot Nicolas Barrier" Nicolas Barrier 13179 geometry::covered_by and geometry::within not working for certain values geometry Boost 1.65.0 To Be Determined Bugs Barend Gehrels new 2017-08-25T21:04:11Z 2018-06-12T20:09:08Z "''covered_by'' and ''within'' return false even if the point is obviously located within the polygon, as the following code demonstrates: {{{ #!c++ #include #include #include #include #include typedef boost::geometry::model::d2::point_xy Point; typedef boost::geometry::model::polygon Polygon; int main() { std::cout << ""Running Boost in version "" << BOOST_VERSION << std::endl; Polygon polygon; std::vector points; points.emplace_back(Point(68.3, 35.5)); points.emplace_back(Point(68.3, 35.6)); points.emplace_back(Point(70.3, 35.9)); points.emplace_back(Point(70.3, 35.8)); Point point(69.2, 35.7); boost::geometry::assign_points(polygon, points); std::cout << ""Point is covered by polygon: "" << boost::geometry::covered_by(point, polygon) << std::endl; std::cout << ""Point is within by polygon: "" << boost::geometry::within(point, polygon) << std::endl; return 0; } }}} which gives: {{{ Running Boost in version 106500 Point is covered by polygon: 0 Point is within by polygon: 0 }}}" Stanley 13177 Possible loss of data warnings geometry Boost 1.65.0 To Be Determined Bugs Barend Gehrels new 2017-08-24T21:58:45Z 2017-08-24T21:58:45Z "In aggregate_operations.hpp, struct rank_with_rings, there are conversions from signed_size_type to int, there are similar conversions in traversal_intersection_patterns.hpp. This is causing loss of data warnings in the project I work on, which prevent the build from completing due to treating warnings as errors. " anonymous 13174 boost::property_tree::read_json throws exception (see attachment) property_tree Boost 1.64.0 To Be Determined Bugs Sebastian Redl new 2017-08-22T00:38:04Z 2017-08-22T01:02:06Z " {{{ boost::property_tree::ptree tree; std::stringstream ss(""{\""name\"": \""test\""}""); boost::property_tree::read_json(ss, tree); }}}" anonymous 13173 """program_options"" build fail. ""boost::lambda"" is working without any problem." program_options Boost 1.64.0 To Be Determined Bugs Vladimir Prus new 2017-08-21T19:52:22Z 2017-08-21T19:52:22Z " Hello, ""program_options"" build fail. ""boost::lambda"" is working without any problem. This example below doesn't work: {{{ #include ""boost/program_options.hpp"" namespace po = boost::program_options; #include #include using namespace std; int main(int ac, char* av[]) { try { po::options_description desc(""Allowed options""); desc.add_options() (""help"", ""produce help message"") (""compression"", po::value(), ""set compression level""); po::variables_map vm; po::store(po::parse_command_line(ac, av, desc), vm); po::notify(vm); if (vm.count(""help"")) { cout << desc << ""\n""; return 0; } if (vm.count(""compression"")) { cout << ""Compression level was set to "" << vm[""compression""].as() << "".\n""; } else { cout << ""Compression level was not set.\n""; } } catch(exception& e) { cerr << ""error: "" << e.what() << ""\n""; return 1; } catch(...) { cerr << ""Exception of unknown type!\n""; } return 0; } }}} {{{ [ 50%] Linking CXX executable mem1 Undefined symbols for architecture x86_64: ""boost::program_options::validators::check_first_occurrence(boost::any const&)"", referenced from: void boost::program_options::validate(boost::any&, std::__1::vector, std::__1::allocator >, std::__1::allocator, std::__1::allocator > > > const&, double*, long) in main.cpp.o ""boost::program_options::to_internal(std::__1::basic_string, std::__1::allocator > const&)"", referenced from: std::__1::vector, std::__1::allocator >, std::__1::allocator, std::__1::allocator > > > boost::program_options::to_internal, std::__1::allocator > >(std::__1::vector, std::__1::allocator >, std::__1::allocator, std::__1::allocator > > > const&) in main.cpp.o ""boost::program_options::variables_map::variables_map()"", referenced from: _main in main.cpp.o ""boost::program_options::validation_error::get_template(boost::program_options::validation_error::kind_t)"", referenced from: boost::program_options::validation_error::validation_error(boost::program_options::validation_error::kind_t, std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator > const&, int) in main.cpp.o ""boost::program_options::options_description::add_options()"", referenced from: _main in main.cpp.o ""boost::program_options::options_description::m_default_line_length"", referenced from: _main in main.cpp.o ""boost::program_options::options_description::options_description(std::__1::basic_string, std::__1::allocator > const&, unsigned int, unsigned int)"", referenced from: _main in main.cpp.o ""boost::program_options::invalid_option_value::invalid_option_value(std::__1::basic_string, std::__1::allocator > const&)"", referenced from: void boost::program_options::validate(boost::any&, std::__1::vector, std::__1::allocator >, std::__1::allocator, std::__1::allocator > > > const&, double*, long) in main.cpp.o ""boost::program_options::error_with_option_name::error_with_option_name(std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator > const&, int)"", referenced from: boost::program_options::validation_error::validation_error(boost::program_options::validation_error::kind_t, std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator > const&, int) in main.cpp.o ""boost::program_options::options_description_easy_init::operator()(char const*, boost::program_options::value_semantic const*, char const*)"", referenced from: _main in main.cpp.o ""boost::program_options::options_description_easy_init::operator()(char const*, char const*)"", referenced from: _main in main.cpp.o ""boost::program_options::arg"", referenced from: boost::program_options::typed_value::name() const in main.cpp.o ""boost::program_options::store(boost::program_options::basic_parsed_options const&, boost::program_options::variables_map&, bool)"", referenced from: _main in main.cpp.o ""boost::program_options::detail::cmdline::set_additional_parser(boost::function1, std::__1::allocator >, std::__1::basic_string, std::__1::allocator > >, std::__1::basic_string, std::__1::allocator > const&>)"", referenced from: boost::program_options::basic_command_line_parser::extra_parser(boost::function1, std::__1::allocator >, std::__1::basic_string, std::__1::allocator > >, std::__1::basic_string, std::__1::allocator > const&>) in main.cpp.o ""boost::program_options::detail::cmdline::set_options_description(boost::program_options::options_description const&)"", referenced from: boost::program_options::basic_command_line_parser::options(boost::program_options::options_description const&) in main.cpp.o ""boost::program_options::detail::cmdline::get_canonical_option_prefix()"", referenced from: boost::program_options::basic_command_line_parser::run() in main.cpp.o ""boost::program_options::detail::cmdline::run()"", referenced from: boost::program_options::basic_command_line_parser::run() in main.cpp.o ""boost::program_options::detail::cmdline::style(int)"", referenced from: boost::program_options::basic_command_line_parser::style(int) in main.cpp.o ""boost::program_options::detail::cmdline::cmdline(std::__1::vector, std::__1::allocator >, std::__1::allocator, std::__1::allocator > > > const&)"", referenced from: boost::program_options::basic_command_line_parser::basic_command_line_parser(int, char const* const*) in main.cpp.o ""boost::program_options::notify(boost::program_options::variables_map&)"", referenced from: _main in main.cpp.o ""boost::program_options::operator<<(std::__1::basic_ostream >&, boost::program_options::options_description const&)"", referenced from: _main in main.cpp.o ""boost::program_options::abstract_variables_map::operator[](std::__1::basic_string, std::__1::allocator > const&) const"", referenced from: boost::program_options::variables_map::operator[](std::__1::basic_string, std::__1::allocator > const&) const in main.cpp.o ""boost::program_options::error_with_option_name::substitute_placeholders(std::__1::basic_string, std::__1::allocator > const&) const"", referenced from: vtable for boost::exception_detail::clone_impl > in main.cpp.o vtable for boost::exception_detail::error_info_injector in main.cpp.o vtable for boost::program_options::validation_error in main.cpp.o vtable for boost::exception_detail::clone_impl > in main.cpp.o vtable for boost::exception_detail::error_info_injector in main.cpp.o vtable for boost::program_options::invalid_option_value in main.cpp.o ""boost::program_options::error_with_option_name::what() const"", referenced from: vtable for boost::exception_detail::clone_impl > in main.cpp.o vtable for boost::exception_detail::error_info_injector in main.cpp.o vtable for boost::program_options::validation_error in main.cpp.o vtable for boost::exception_detail::clone_impl > in main.cpp.o vtable for boost::exception_detail::error_info_injector in main.cpp.o vtable for boost::program_options::invalid_option_value in main.cpp.o ""boost::program_options::value_semantic_codecvt_helper::parse(boost::any&, std::__1::vector, std::__1::allocator >, std::__1::allocator, std::__1::allocator > > > const&, bool) const"", referenced from: vtable for boost::program_options::typed_value in main.cpp.o ""typeinfo for boost::program_options::error_with_option_name"", referenced from: typeinfo for boost::program_options::validation_error in main.cpp.o ""typeinfo for boost::program_options::value_semantic_codecvt_helper"", referenced from: typeinfo for boost::program_options::typed_value in main.cpp.o ""vtable for boost::program_options::variables_map"", referenced from: boost::program_options::variables_map::~variables_map() in main.cpp.o NOTE: a missing vtable usually means the first non-inline virtual member function has no definition. ""vtable for boost::program_options::error_with_option_name"", referenced from: boost::program_options::error_with_option_name::error_with_option_name(boost::program_options::error_with_option_name const&) in main.cpp.o boost::program_options::error_with_option_name::~error_with_option_name() in main.cpp.o NOTE: a missing vtable usually means the first non-inline virtual member function has no definition. ""vtable for boost::program_options::value_semantic_codecvt_helper"", referenced from: boost::program_options::value_semantic_codecvt_helper::value_semantic_codecvt_helper() in main.cpp.o NOTE: a missing vtable usually means the first non-inline virtual member function has no definition. ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make[3]: *** [mem1] Error 1 make[2]: *** [CMakeFiles/mem1.dir/all] Error 2 make[1]: *** [CMakeFiles/mem1.dir/rule] Error 2 make: *** [mem1] Error 2 }}} This example below is working: {{{ #include #include #include #include int main() { using namespace boost::lambda; typedef std::istream_iterator in; std::for_each( in(std::cin), in(), std::cout << (_1 * 3) << "" "" ); } }}} Thank you, Yoni" Yoni Shperling 13172 filesystem::directory_iterator::operator++: Function not implemented (errno not reset) filesystem Boost 1.64.0 To Be Determined Bugs Beman Dawes new 2017-08-21T18:32:24Z 2017-11-16T16:00:02Z "In `boost/libs/filesystem/src/operations.cpp` we have `readdir_r_simulator`, which throws > exception of type boost::filesystem::filesystem_error: boost::filesystem::directory_iterator::operator++: Function not implemented: ""/data/local/tmp/my_existing_path"" This is because `errno` is not reset after the `::sysconf(_SC_THREAD_SAFE_FUNCTIONS)` call, which sets errno to 38 = ENOSYS. A patch is to add the line errno = 0; after `::sysconf(_SC_THREAD_SAFE_FUNCTIONS)`. This affects Android, e.g. https://github.com/android-ndk/ndk/issues/457 " Simon Warta 13171 Linker error when using boost::process::posix::use_vfork process Boost 1.64.0 To Be Determined Bugs new 2017-08-21T11:41:16Z 2017-08-23T11:55:19Z "Trying to build the following code using GCC 7.1.1 and Boost 1.64.0 fails: {{{ #include namespace bp = boost::process; int main(void) { bp::child c(""ls"", bp::posix::use_vfork); c.wait(); return 0; } }}} The following linker error is generated: {{{ In function 'boost::process::detail::posix::executor >, boost::fusion::filter_view&, boost::process::detail::posix::use_vfork_ const&> const, boost::process::detail::is_initializer > > > >::operator()()': spawn_simple.cpp:(.text._ZN5boost7process6detail5posix8executorINS_6fusion10joint_viewINS4_5tupleIJNS2_12exe_cmd_initIcEEEEENS4_11filter_viewIKNS6_IJRA6_KcRNS2_8null_outILi1ELin1EEERKNS2_10use_vfork_EEEENS1_14is_initializerIN4mpl_3argILin1EEEEEEEEEEclEv[_ZN5boost7process6detail5posix8executorINS_6fusion10joint_viewINS4_5tupleIJNS2_12exe_cmd_initIcEEEEENS4_11filter_viewIKNS6_IJRA6_KcRNS2_8null_outILi1ELin1EEERKNS2_10use_vfork_EEEENS1_14is_initializerIN4mpl_3argILin1EEEEEEEEEEclEv]+0x31): undefined reference to `boost::process::detail::posix::executor >, boost::fusion::filter_view&, boost::process::detail::posix::use_vfork_ const&> const, boost::process::detail::is_initializer > > > >::invoke(mpl_::bool_, mpl_::bool_)' }}} Given that Boost Process is a header-only library, why is the linker complaining about unresolved symbols in {{{boost::process::...::invoke()}}}?" Ton van den Heuvel 13169 Context breaks with using python jam file context Boost 1.65.0 To Be Determined Bugs olli new 2017-08-21T01:37:13Z 2017-08-21T01:37:13Z "With {{{ using python : 3.6 # Version : c:\\Users\\gfurn\\AppData\\Local\\Programs\\Python\\Python36\\python.exe # Python Path : c:/Users/gfurn/AppData/Local/Programs/Python/Python36/include # include path : c:/Users/gfurn/AppData/Local/Programs/Python/Python36/lib # lib path(s) : BOOST_ALL_NO_LIB=1 ; }}} as a user.jam, the following build messages are emitted on trunk. {{{ ...updating 10 targets... msvc.compile.asm bin.v2\libs\context\build\msvc-14.1\debug\link-static\threading-multi\asm\make_i386_ms_pe_masm.obj The system cannot find the file specified. call ""C:\Users\gfurn\AppData\Local\Temp\b2_msvc_14.1_vcvars32_.cmd"" >nul ml -coff -nologo -c -Zp4 -Cp -Cx -DBOOST_ALL_NO_LIB=1 -DBOOST_ALL_NO_LIB=1,3.6,windows:c:\Users\gfurn\AppData\Local\Programs\Python\Python36\python.exe -DBOOST_CONTEXT_EXPORT= -DBOOST_CONTEXT_SOURCE -D_WIN32_WINNT=0x0601 -DBOOST_ALL_NO_LIB=1 -DBOOST_ALL_NO_LIB=1,3.6,windows:c:\Users\gfurn\AppData\Local\Programs\Python\Python36\python.exe -DBOOST_CONTEXT_EXPORT= -DBOOST_CONTEXT_SOURCE -D_WIN32_WINNT=0x0601 /Zi /Zd /W3 -Fo ""bin.v2\libs\context\build\msvc-14.1\debug\link-static\threading-multi\asm\make_i386_ms_pe_masm.obj"" ""libs\context\src\asm\make_i386_ms_pe_masm.asm"" ...failed msvc.compile.asm bin.v2\libs\context\build\msvc-14.1\debug\link-static\threading-multi\asm\make_i386_ms_pe_masm.obj... msvc.compile.asm bin.v2\libs\context\build\msvc-14.1\debug\link-static\threading-multi\asm\jump_i386_ms_pe_masm.obj The system cannot find the file specified. call ""C:\Users\gfurn\AppData\Local\Temp\b2_msvc_14.1_vcvars32_.cmd"" >nul ml -coff -nologo -c -Zp4 -Cp -Cx -DBOOST_ALL_NO_LIB=1 -DBOOST_ALL_NO_LIB=1,3.6,windows:c:\Users\gfurn\AppData\Local\Programs\Python\Python36\python.exe -DBOOST_CONTEXT_EXPORT= -DBOOST_CONTEXT_SOURCE -D_WIN32_WINNT=0x0601 -DBOOST_ALL_NO_LIB=1 -DBOOST_ALL_NO_LIB=1,3.6,windows:c:\Users\gfurn\AppData\Local\Programs\Python\Python36\python.exe -DBOOST_CONTEXT_EXPORT= -DBOOST_CONTEXT_SOURCE -D_WIN32_WINNT=0x0601 /Zi /Zd /W3 -Fo ""bin.v2\libs\context\build\msvc-14.1\debug\link-static\threading-multi\asm\jump_i386_ms_pe_masm.obj"" ""libs\context\src\asm\jump_i386_ms_pe_masm.asm"" ...failed msvc.compile.asm bin.v2\libs\context\build\msvc-14.1\debug\link-static\threading-multi\asm\jump_i386_ms_pe_masm.obj... msvc.compile.asm bin.v2\libs\context\build\msvc-14.1\debug\link-static\threading-multi\asm\ontop_i386_ms_pe_masm.obj The system cannot find the file specified. call ""C:\Users\gfurn\AppData\Local\Temp\b2_msvc_14.1_vcvars32_.cmd"" >nul ml -coff -nologo -c -Zp4 -Cp -Cx -DBOOST_ALL_NO_LIB=1 -DBOOST_ALL_NO_LIB=1,3.6,windows:c:\Users\gfurn\AppData\Local\Programs\Python\Python36\python.exe -DBOOST_CONTEXT_EXPORT= -DBOOST_CONTEXT_SOURCE -D_WIN32_WINNT=0x0601 -DBOOST_ALL_NO_LIB=1 -DBOOST_ALL_NO_LIB=1,3.6,windows:c:\Users\gfurn\AppData\Local\Programs\Python\Python36\python.exe -DBOOST_CONTEXT_EXPORT= -DBOOST_CONTEXT_SOURCE -D_WIN32_WINNT=0x0601 /Zi /Zd /W3 -Fo ""bin.v2\libs\context\build\msvc-14.1\debug\link-static\threading-multi\asm\ontop_i386_ms_pe_masm.obj"" ""libs\context\src\asm\ontop_i386_ms_pe_masm.asm"" ...failed msvc.compile.asm bin.v2\libs\context\build\msvc-14.1\debug\link-static\threading-multi\asm\ontop_i386_ms_pe_masm.obj... ...skipped libboost_context-vc141-mt-gd-1_65.lib for lack of asm\make_i386_ms_pe_masm.obj... ...skipped libboost_context-vc141-mt-gd-1_65.lib for lack of libboost_context-vc141-mt-gd-1_65.lib... msvc.compile.asm bin.v2\libs\context\build\msvc-14.1\release\link-static\threading-multi\asm\make_i386_ms_pe_masm.obj The system cannot find the file specified. call ""C:\Users\gfurn\AppData\Local\Temp\b2_msvc_14.1_vcvars32_.cmd"" >nul ml -coff -nologo -c -Zp4 -Cp -Cx -DBOOST_ALL_NO_LIB=1 -DBOOST_ALL_NO_LIB=1,3.6,windows:c:\Users\gfurn\AppData\Local\Programs\Python\Python36\python.exe -DBOOST_CONTEXT_EXPORT= -DBOOST_CONTEXT_SOURCE -DBOOST_DISABLE_ASSERTS -DNDEBUG -D_WIN32_WINNT=0x0601 -DBOOST_ALL_NO_LIB=1 -DBOOST_ALL_NO_LIB=1,3.6,windows:c:\Users\gfurn\AppData\Local\Programs\Python\Python36\python.exe -DBOOST_CONTEXT_EXPORT= -DBOOST_CONTEXT_SOURCE -DBOOST_DISABLE_ASSERTS -DNDEBUG -D_WIN32_WINNT=0x0601 /W3 -Fo ""bin.v2\libs\context\build\msvc-14.1\release\link-static\threading-multi\asm\make_i386_ms_pe_masm.obj"" ""libs\context\src\asm\make_i386_ms_pe_masm.asm"" ...failed msvc.compile.asm bin.v2\libs\context\build\msvc-14.1\release\link-static\threading-multi\asm\make_i386_ms_pe_masm.obj... msvc.compile.asm bin.v2\libs\context\build\msvc-14.1\release\link-static\threading-multi\asm\ontop_i386_ms_pe_masm.obj The system cannot find the file specified. call ""C:\Users\gfurn\AppData\Local\Temp\b2_msvc_14.1_vcvars32_.cmd"" >nul ml -coff -nologo -c -Zp4 -Cp -Cx -DBOOST_ALL_NO_LIB=1 -DBOOST_ALL_NO_LIB=1,3.6,windows:c:\Users\gfurn\AppData\Local\Programs\Python\Python36\python.exe -DBOOST_CONTEXT_EXPORT= -DBOOST_CONTEXT_SOURCE -DBOOST_DISABLE_ASSERTS -DNDEBUG -D_WIN32_WINNT=0x0601 -DBOOST_ALL_NO_LIB=1 -DBOOST_ALL_NO_LIB=1,3.6,windows:c:\Users\gfurn\AppData\Local\Programs\Python\Python36\python.exe -DBOOST_CONTEXT_EXPORT= -DBOOST_CONTEXT_SOURCE -DBOOST_DISABLE_ASSERTS -DNDEBUG -D_WIN32_WINNT=0x0601 /W3 -Fo ""bin.v2\libs\context\build\msvc-14.1\release\link-static\threading-multi\asm\ontop_i386_ms_pe_masm.obj"" ""libs\context\src\asm\ontop_i386_ms_pe_masm.asm"" ...failed msvc.compile.asm bin.v2\libs\context\build\msvc-14.1\release\link-static\threading-multi\asm\ontop_i386_ms_pe_masm.obj... msvc.compile.asm bin.v2\libs\context\build\msvc-14.1\release\link-static\threading-multi\asm\jump_i386_ms_pe_masm.obj The system cannot find the file specified. call ""C:\Users\gfurn\AppData\Local\Temp\b2_msvc_14.1_vcvars32_.cmd"" >nul ml -coff -nologo -c -Zp4 -Cp -Cx -DBOOST_ALL_NO_LIB=1 -DBOOST_ALL_NO_LIB=1,3.6,windows:c:\Users\gfurn\AppData\Local\Programs\Python\Python36\python.exe -DBOOST_CONTEXT_EXPORT= -DBOOST_CONTEXT_SOURCE -DBOOST_DISABLE_ASSERTS -DNDEBUG -D_WIN32_WINNT=0x0601 -DBOOST_ALL_NO_LIB=1 -DBOOST_ALL_NO_LIB=1,3.6,windows:c:\Users\gfurn\AppData\Local\Programs\Python\Python36\python.exe -DBOOST_CONTEXT_EXPORT= -DBOOST_CONTEXT_SOURCE -DBOOST_DISABLE_ASSERTS -DNDEBUG -D_WIN32_WINNT=0x0601 /W3 -Fo ""bin.v2\libs\context\build\msvc-14.1\release\link-static\threading-multi\asm\jump_i386_ms_pe_masm.obj"" ""libs\context\src\asm\jump_i386_ms_pe_masm.asm"" ...failed msvc.compile.asm bin.v2\libs\context\build\msvc-14.1\release\link-static\threading-multi\asm\jump_i386_ms_pe_masm.obj... ...skipped libboost_context-vc141-mt-1_65.lib for lack of asm\make_i386_ms_pe_masm.obj... ...skipped libboost_context-vc141-mt-1_65.lib for lack of libboost_context-vc141-mt-1_65.lib... ...failed updating 6 targets... ...skipped 4 targets... }}} The problem appears to be the line, as commenting that out makes everything work." Gary Furnish 13168 Boost python tutorial doesn't build. python USE GITHUB Boost 1.58.0 To Be Determined Bugs Ralf W. Grosse-Kunstleve new 2017-08-19T01:11:07Z 2017-08-19T01:44:23Z "{{{ cd $BOOST_ROOT/libs/python/example/tutorial bjam }}} And fails to find bootstrap.jam. When you use BOOST_BUILD_PATH to point to bootstrap.jam, this results in the entire libboost_python library being built *in situ*, and then, of course, hello_ext.so will not load. And, if you configure user-config.jam to use python3, then the output shared library (i.e., ""hello_ext.so"") is misnamed. It should be ""_hello_ext.so"". " aaron@… 13166 gcc static linking with LTO flag with boost filesystem fails filesystem Boost 1.64.0 To Be Determined Bugs Beman Dawes new 2017-08-17T15:06:40Z 2018-04-18T08:46:33Z "boost version 1.64 \\ gcc version 6.4.1 \\ Linux OpenSuse x64 42.2 \\ Cmake 3.5.2 \\ \\ **[linking, no LTO] works:** \\ -std=gnu++11 -O2 -fopenmp -static /opt/lib64/libboost_filesystem.a /opt/lib64/libboost_system.a \\ **[linking, with LTO] does not work:** \\ -std=gnu++11 -O2 -fopenmp -flto=8 -static /opt/lib64/libboost_filesystem.a /opt/lib64/libboost_system.a **error:** {{{ /opt/lib64/libboost_filesystem.a(operations.o): In function `boost::filesystem::detail::is_empty(boost::filesystem::path const&, boost::system::error_code*)': operations.cpp:(.text+0x536a): undefined reference to `vtable for boost::detail::sp_counted_impl_p' /opt/lib64/libboost_filesystem.a(operations.o): In function `(anonymous namespace)::remove_all_aux(boost::filesystem::path const&, boost::filesystem::file_type, boost::system::error_code*)': operations.cpp:(.text+0x699d): undefined reference to `vtable for boost::detail::sp_counted_impl_p' operations.cpp:(.text+0x6add): undefined reference to `vtable for boost::detail::sp_counted_impl_p' collect2: error: ld returned 1 exit status CMakeFiles/zebr.dir/build.make:137: recipe for target 'zebr' failed }}} " mettbest@… 13165 inplace_ptr smart_ptr Boost 1.64.0 To Be Determined Feature Requests Peter Dimov new 2017-08-17T10:43:35Z 2017-09-03T18:22:28Z "Boost.Optional uses in place object creation. In many cases it could used as a drop in repelacment of scoped_ptr with the benefit of circumventing a memory allocation and locality of memory access. However its semantics is 'optional' and not like a fast replacement of scoped_ptr. Wouldn't it be an idea to add something like this to the smart_ptr library? Names can be e.g. inplace_ptr, value_ptr, etc. We could also use Boost.Optional but colleagues might get confused, since you do not use the 'optional' aspect but its performance aspect. Note that people might wonder why not use value based directly, but there are still some use cases: * for pimpl idiom / hide expansive headers (e.g. multi index) in client * 2 phase construction, where information is not yet available at parent constructor time. Only drawback is that you lose polymorphism. https://stackoverflow.com/questions/22636407/why-not-use-boostoptional-as-a-better-scoped-ptr" gast128@… 13164 Unable to build Boost.Iostreams with pre-built zlib on Windows iostreams Boost 1.64.0 Boost 1.64.0 Bugs Jonathan Turkanis new 2017-08-17T10:00:42Z 2017-08-17T10:00:42Z "I want zlib to be statically linked to the iostreams library Command line approach: b2 --with-iostreams link=static -sNO_ZLIB=0 -sNO_COMPRESSION=0 -sZLIB_INCLUDE=e:/zlib/include -sZLIB_LIBRARY_PATH=e:/ b/lib -sZLIB_BINARY=zlib.lib -sZLIB_NAME=zlib --debug-configuration After that I get : unresolved external symbol ""int const boost::iostreams::zlib::best_speed"" (?best_speed@zlib@iostreams@boost@@3HB) unresolved external symbol ""int const boost::iostreams::zlib::best_compression"" (?best_compression@zlib@iostreams@boost@@3HB) ... The same situation if configure 'using zlib' in user-config.jam: using zlib : : e:/zlib/include e:/ b/lib zlib : msvc ; and command: b2 --with-iostreams link=static -sNO_ZLIB=0 -sNO_COMPRESSION=0 --debug-configuration" listhex@… 13162 Sharable Lock And Upgradable Lock documentation interprocess Boost 1.64.0 To Be Determined Bugs Ion Gaztañaga new 2017-08-14T11:10:56Z 2017-08-14T11:10:56Z "http://www.boost.org/doc/libs/1_64_0/doc/html/interprocess/synchronization_mechanisms.html#interprocess.synchronization_mechanisms.sharable_upgradable_mutexes.sharable_upgradable_locks The documentation of the interprocess sharable and upgradable locks state that ""Boost.Interprocess mutexes are best used with the scoped_lock utility, and this class only offers exclusive locking."". Then goes on to explain to use sharable_lock and upgradable_lock. Then shows some examples; but the example for a timed lock is wrong or misleading: { boost::posix_time::ptime abs_time = ... //This will call timed_lock_sharable() scoped_lock lock(sh_or_up_mutex, abs_time); //Check if the mutex has been successfully locked if(lock){ //Some code } //If the mutex was locked it will be unlocked } The example basically says that the scoped_lock will acquire a sharable lock (saying that it will call timed_lock_sharable())! This should read ""sharable_lock<..."" instead of ""scoped_lock<..."" same with upgradable lock." anonymous 13161 Optional vector assignment regression optional Boost 1.63.0 To Be Determined Bugs Fernando Cacciola new 2017-08-14T06:43:17Z 2017-08-16T03:39:04Z "{{{ boost::optional> v; v = { 1, 3 }; }}} Assignment doesn't compile anymore. It worked in 1.62 and reports an error in 1.63. I think it has to do with the addition of BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX but I could be wrong. " popizdeh@… 13158 core dump when get parent_path in a new thread filesystem Boost 1.56.0 To Be Determined Bugs Beman Dawes new 2017-08-10T15:59:51Z 2017-08-10T16:08:31Z "I will create a boost thread to delete some outdated files, and there is high possibility the program crash, when the program exit. I got the issue like me, but not determined. I doubt it's reason of the static variable of locale. in groups.google.com/forum/#!topic/boost-list/HOyZxH8JJc4 {{{ time_t del_time = cut_time - log_keep_time_ * 60; std::string del_path(file_path_); boost::thread del_thread(MiLogFile::removeExpiredLog, del_path, del_time); del_thread.detach(); int MiLogFile::removeExpiredLog(std::string file_path, uint32_t expire_time) { boost::filesystem::path log_path(file_path); boost::filesystem::path dir = log_path.parent_path(); }}} {{{ #3 0x00007fad7a9f4393 in __dynamic_cast () from /usr/lib64/libstdc++.so.6 #4 0x00007fad7a9d9fbb in std::codecvt const& std::use_facet >(std::locale const&) () from /usr/lib64/libstdc++.so.6 #5 0x00007fad7ca415ad in boost::filesystem::path::parent_path() const () from ../../../..//ext//boost_1_56_0/stage/lib/libboost_filesystem.so.1.56.0 #6 0x00007fad7cc77ad0 in common::milog::MiLogFile::removeExpiredLog (file_path=..., expire_time=1502292035) at src/milog_file.cpp:361 #7 0x00007fad7cc7b706 in operator(), std::allocator >, unsigned int), boost::_bi::list0> (a=..., f=, this=) at ../../../../..//ext//boost_1_56_0/boost/bind/bind.hpp:303 #8 operator() (this=) at ../../../../..//ext//boost_1_56_0/boost/bind/bind_template.hpp:20 #9 boost::detail::thread_data, boost::_bi::value > > >::run (this=) at ../../../../..//ext//boost_1_56_0/boost/thread/detail/thread.hpp:115 #10 0x00007fad7e3d5e83 in thread_proxy () from ../../../..//ext//boost_1_56_0/stage/lib/libboost_thread.so.1.56.0 #11 0x00007fad79ef5aa1 in start_thread () from /lib64/libpthread.so.0 #12 0x00007fad7a1f3aad in clone () from /lib64/libc.so.6 }}} " jaycelq@… 13157 Failed to Install build Boost 1.60.0 To Be Determined Bugs Vladimir Prus new 2017-08-10T03:42:39Z 2018-05-10T10:46:27Z "Cannot install - in command prompt : ********************************************************************** ** Visual Studio 2017 Developer Command Prompt v15.0.26430.16 ** Copyright (c) 2017 Microsoft Corporation ********************************************************************** [vcvarsall.bat] Environment initialized for: 'x64' C:\Program Files (x86)\Microsoft Visual Studio\2017\Community>cd C:\C++_Library\boost_1_60_0 C:\C++_Library\boost_1_60_0>bootstrap Building Boost.Build engine cl : Command line warning D9035 : option 'GZ' has been deprecated and will be removed in a future release cl : Command line warning D9036 : use 'RTC1' instead of 'GZ' cl : Command line warning D9002 : ignoring unknown option '/MLd' Failed to build Boost.Build engine. Please consult bootstrap.log for further diagnostics. You can try to obtain a prebuilt binary from http://sf.net/project/showfiles.php?group_id=7586&package_id=72941 Also, you can file an issue at http://svn.boost.org Please attach bootstrap.log in that case. " shadowflameg@… 13156 Not word boundary - \b vs. NOT \B are not the same regex Boost 1.64.0 To Be Determined Bugs John Maddock new 2017-08-10T01:36:30Z 2017-08-10T01:36:30Z "I am reposting this from another source. In theory, \B should match everywhere \b doesn't. In boost regex, this is not the case at the beginning nor end of string. Below is a list of test results from a few Perl-like engines. Apparently, this was fixed in Perl v5.22 (below shows v5.20). The only engines that seem to handle this correctly is PHP and ECMAScript. ------------------------------------------------ {{{ Target = ' ssssssssssssss ' Replacement = '<>' ================================================== PHP 7.03 \b = ' <>ssssssssssssss<> ' \B = '<> <> <> s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s <>' (?!\b) = '<> <> <> s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s <>' (? <> <> s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s <>' (?!\B) = ' <>ssssssssssssss<> ' (?ssssssssssssss<> ' ======================================= Perl 5.20 \b = ' <>ssssssssssssss<> ' \B = '<> <> <> s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s ' (?!\b) = '<> <> <> s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s <>' (? <> <> s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s <>' (?!\B) = ' <>ssssssssssssss<> ' (?ssssssssssssss<> ' ======================================== Boost 1.64 \b = ' <>ssssssssssssss<> ' \B = ' <> <> s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s ' (?!\b) = '<> <> <> s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s <>' (? <> <> s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s <>' (?!\B) = '<> <>ssssssssssssss<> <>' (? <>ssssssssssssss<> <>' ===================================== JavaScript \b = ' <>ssssssssssssss<> ' \B = '<> <> <> s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s <>' (?!\b) = '<> <> <> s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s <>' (?!\B) = ' <>ssssssssssssss<> ' }}} " anonymous 13154 Error compiling pthread/thread.o on Oracle Linux with Oracle compiler and stdlib=sun-stlport build Boost 1.63.0 To Be Determined Bugs Vladimir Prus new 2017-08-09T12:40:34Z 2017-08-10T10:41:19Z "On Oracle Linux 7.3 with stdlib=sun-stlport: sun.compile.c++ bin.v2/libs/thread/build/sun/release/stdlib-sun-stlport/threadin g-multi/pthread/thread.o ""/usr/include/linux/sysinfo.h"", line 21: Error: An array cannot have zero size unless you use the option -features=zla. 1 Error(s) detected. The compiler refuses to accept zero length array in -compat=5 mode (required for stdlib=sun-stlport and =apache). A special option needs to be added to the command line: -features=zla " maxim.kartashev@… 13153 Missing return statement in range/algorithm_ext/insert.hpp range Boost 1.64.0 To Be Determined Bugs Neil Groves new 2017-08-09T12:24:11Z 2018-06-30T21:08:25Z "Return statement is missing in method insert( Container& on, const Range& from ) Adding return on; fixes compilation. Seems to be a regression since patch #6726 ( https://svn.boost.org/trac10/ticket/6726 )" Olivier B. 13151 Graph dominiator tree considers unvisited vertices graph Boost 1.64.0 To Be Determined Bugs Jeremiah Willcock new 2017-08-09T10:26:12Z 2017-08-09T10:26:12Z "The graph dominator tree will consider vertices that are not reachable from the given root. The unreachable check is implemented checking ""dfnum < 0 || dfnum >= numOfVertices"", but the dfnum map is initialized to 0. So when nodes are really unvisited they will have a value of 0 and pass the check. Simple fix could be: https://github.com/boostorg/graph/pull/97" scott.gregory.west@… 13147 Crash in boost::asio::basic_streambuf asio Boost 1.63.0 To Be Determined Bugs chris_kohlhoff new 2017-08-04T06:50:09Z 2017-08-15T04:56:00Z "Hi All, Our program crashed in boost::asio::streambuf while streambuf was reserving more spaces. The related codes using boost::asio::streambuf is like this: {{{ boost::asio::streambuf send_buffer; std::ostream send_stream(&send_buffer); send_stream << ""MESSAGE...""; send_stream << flush(); ... boost::asio::async_write(ssl_stream, send_buffer, ...); }}}" luliu@… 13146 Precompiled lib32-msvc-12.0 binaries don't compile in VS2013 projects process Boost 1.64.0 To Be Determined Bugs new 2017-08-02T23:06:14Z 2017-08-18T09:16:19Z "Seems to be problems related to process/detail/config.hpp. 2>C:\local\boost_1_64_0\boost/process/detail/config.hpp(86): error C2146: syntax error : missing ';' before identifier 'Char' 2>C:\local\boost_1_64_0\boost/process/detail/config.hpp(86): error C2146: syntax error : missing ';' before identifier 'null_char' 2>C:\local\boost_1_64_0\boost/process/detail/config.hpp(86): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 2>C:\local\boost_1_64_0\boost/process/detail/config.hpp(87): error C2144: syntax error : 'char' should be preceded by ';' 2>C:\local\boost_1_64_0\boost/process/detail/config.hpp(87): error C2143: syntax error : missing ';' before '<' 2>C:\local\boost_1_64_0\boost/process/detail/config.hpp(88): error C2143: syntax error : missing ';' before '{' 2>C:\local\boost_1_64_0\boost/process/detail/config.hpp(88): error C2447: '{' : missing function header (old-style formal list?) 2>C:\local\boost_1_64_0\boost/process/detail/config.hpp(90): error C2146: syntax error : missing ';' before identifier 'Char' 2>C:\local\boost_1_64_0\boost/process/detail/config.hpp(90): error C2146: syntax error : missing ';' before identifier 'equal_sign' 2>C:\local\boost_1_64_0\boost/process/detail/config.hpp(90): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int" komannamok@… 13145 parse_charset.hpp(304): warning C4456: declaration of 'invert' hides previous local declaration xpressive Boost 1.63.0 To Be Determined Bugs Eric Niebler new 2017-08-02T09:03:08Z 2017-08-02T09:03:08Z "While compiling on Visual Studio 2015 I've got a warning: parse_charset.hpp(304): warning C4456: declaration of 'invert' hides previous local declaration It's really a new declaration of the 'invert' variable and possibly there are a hidden error or the variable should be renamed" Dmitry Yastrebkov 13144 Hinted overloads of boost::container::flat_map::insert_or_assign are uncompilable container Boost 1.64.0 To Be Determined Bugs Ion Gaztañaga new 2017-08-01T18:37:22Z 2017-08-01T18:37:22Z `boost::container::flat_map::insert_or_assign()` overloads which take a hint require an impossible conversion from `std::pair` to `iterator`, breaking compilation of any code that tries to use these methods. Constantin Makshin 13143 boost read_json throw exception when the json file has some gbk chinese charactor property_tree Boost 1.64.0 To Be Determined Bugs Sebastian Redl new 2017-08-01T02:47:29Z 2017-08-01T02:51:09Z "there is a json file like this, without bom, use gbk code set. The boost::property_tree can parse it successfully in the majority. {{{ try { boost::property_tree::read_json(filename, tree); } catch (exception &e) { cerr << e.what() << endl; } }}} However, if the file has chinese character""历""(c0fa)or""繞""(c040), the property_tree will throw exception""invalid code sequence"" " Li Da 13142 circle_formation_functor call has no effect? polygon Boost 1.64.0 To Be Determined Bugs Lucanus Simonson new 2017-07-29T20:25:40Z 2017-07-29T20:39:13Z "What effect has the call of circle_formation_functor_.ppp() in boost::polygon::detail::circle_formation_predicate::operator() ? The call seems to have no side effects, because circle_formation_functor_ is stateless and it does not affect voronoi_builder or voronoi_diagram. Is it safe to simply delete the call? http://www.boost.org/doc/libs/1_64_0/boost/polygon/detail/voronoi_predicates.hpp class circle_formation_predicate { bool operator()(const site_type& site1, const site_type& site2, const site_type& site3, circle_type& circle) { if (!site1.is_segment()) { if (!site2.is_segment()) { if (!site3.is_segment()) { // (point, point, point) sites. if (!circle_existence_predicate_.ppp(site1, site2, site3)) return false; circle_formation_functor_.ppp(site1, site2, site3, circle); // <- This call has no effect, does it?" nkurtov@… 13141 Allow intrusive containers to work with relative pointers (ie with nodes stored in a vector) intrusive Boost 1.64.0 To Be Determined Feature Requests Ion Gaztañaga new 2017-07-28T05:23:14Z 2017-07-28T05:23:14Z "There is an interesting use case that Boost Intrusive containers don't seem to support yet. I would like to store the nodes of my collection in an std::vector. The problem is: as nodes get pushed to the back of the vector, the vector reaches capacity, reallocates its internal buffer and these nodes don't stay at the same address. I therefore cannot use pointers (which hold an absolute address) to chain these nodes together. However, I would like to use indices to chain these nodes. I call that index chaining. The idea is simple. Nodes stay at the same (relative) index inside the vector even though the vector grows and reallocates its internal buffer. Any node-based collection (linked list, red-black tree, etc), can be stored in a contiguous area of memory and represented using index chaining. Think of the index as a relative pointer. This relative pointer needs some context to be dereferenced: the vector in which the elements are stored. There are several good reasons why we might want to store a node-based data structure in a vector. It is more compact. It is more cache-friendly. We can use shorter integers to represent indices (eg int32_t compared to 64-bit absolute pointers), which makes the nodes more compact and the whole data structure more cache-friendly. All the nodes are colocated in a single memory block. If the nodes are trivially destructible, deleting the whole data structure is just a matter of deallocating a single memory block. Las, the different traits class that would have helped (pointer_traits, node algorithms) are stateless and only work through static methods. And offset_ptr doesn't cut it. I haven't found a way to get Boost intrusive to work this way. I might not be the only one trying. groups.google.com/forum/m/#!topic/boost-list/PYKJlqT_wuw describes a similar, if not the same, request. Consider supporting this feature. That would open Boost intrusive to the realm of compact and relocatable node-based data structures." fdegros@… 13140 Quadratic complexity of a flat_set constructor container Boost 1.63.0 To Be Determined Bugs Ion Gaztañaga new 2017-07-28T00:53:15Z 2017-08-08T01:36:20Z "The documentation of [http://www.boost.org/doc/libs/1_64_0/doc/html/boost/container/flat_map.html#boost.container.flat_mapconstruct-copy-destruct boost flat_set constructor taking two iterators] says: {{{ template flat_map(InputIterator first, InputIterator last, const Compare & comp = Compare(), const allocator_type & a = allocator_type()); }}} Effects: Constructs an empty flat_map using the specified comparison object and allocator, and inserts elements from the range [first ,last ). Complexity: Linear in N if the range [first ,last ) is already sorted using comp and otherwise N logN, where N is last - first. However, the complexity of this constructor is O(N*N) because the implementation of the constructor inserts each element into a vector at position found by binary search and insertion is linear in distance to the end of the vector. A simple fix is to insert all elements at once and sort the vector backing `flat_set`. " victor.zverovich@… 13139 child::join() incorrectly throws `waitpid(2) failed: No child processes` if child exited abnormally process Boost 1.64.0 To Be Determined Bugs new 2017-07-27T19:46:16Z 2017-07-27T19:46:16Z "Create a child process. Let it die abnormally (for example, calling `kill(getpid(), SIGABRT)` in the child). In the parent, call `child.join()`. It appears that the `::waitpid` loop in `boost::process::detail::posix::wait` at github.com/boostorg/process/blob/boost-1.64.0/include/boost/process/detail/posix/wait_for_exit.hpp#L26-L31 only checks that the child ended because of a call to `::exit()` and does not check for exiting via signal (`WIFSIGNALED()`). Because `WIFSIGNALED()` is true, `WIFEXITED()` is false; and because it's false, the loop will continue and call `::waitpid()` again... this time with a child PID to a process which has already been reaped. `waitpid()` will report an error (indicating that there's no such child prcess), and the error will be thrown. The child's exact reason for exiting is lost, which is why I believe this should be marked a ""Showstopper"" severity; a workaround would be to avoid calling `boost::process::wait()` in any fashion and to instead use a custom waitpid loop using the `child.native_handle()`." keithb@… 13138 bootstrap.bat throws an error build Boost 1.64.0 Boost 1.64.0 Support Requests Vladimir Prus new 2017-07-27T10:59:40Z 2018-01-23T00:20:51Z "I cannot run the bootstrap.bat file gettin this error: "" fail to build boost.build engien"" I have tryied to runin visual studio 32 and 64 bit (didnt matter) attached the bootstrap.log thanks for you help." oranzohar@… 13137 "boost::optional::operator*() doesn't have ""const &&"" overload, allowing incorrect usage" optional Boost 1.65.0 To Be Determined Bugs Fernando Cacciola new 2017-07-26T06:00:30Z 2017-07-31T04:07:55Z "{{{ #include const boost::optional f() { return {1}; } int main() { const int& ref = *f(); // creates a boost::optional temporary // ""*tmp"" binds to ""optional::operator*() const&"" // ""ref"" starts pointing to internals of the returned temporary // temporary gets destroyed // we have a dangling reference } }}} at the same time, std::optional in C++17 does have {{{ constexpr const T&& operator*() const &&; }}} [http://en.cppreference.com/w/cpp/utility/optional/operator* overload], which lets the code above work correctly." for.gcc.bugzilla@… 13136 Regression: intrusive::unordered_set::rehash now requires T to be hashable intrusive Boost 1.64.0 To Be Determined Bugs Ion Gaztañaga new 2017-07-25T19:45:13Z 2017-07-26T01:13:16Z "It is possible to create an `intrusive::unordered_set` where `T` is not hashable, so long as you never use methods that perform hashing (e.g. insertion is performed via `insert_check` and `insert_commit`, and lookup is performed with a caller-specified hasher). `rehash` is documented as not calling the hash function if `store_hash` is true, so it ought to be callable on a set with that option enabled, and as of Boost 1.60.0 it was. However, as of Boost 1.64.0 calls to `rehash` on such a set no longer compile, because the generated code now includes a call to the hash function (which will never actually be executed). Suggested fix: make `do_full_rehash` a non-type template parameter rather than a function parameter of `rehash_impl`, and encapsulate the `if(do_full_rehash)` logic behind a function template that takes `do_full_rehash` as a template argument (with the two branches as different specializations). That way the code that calls the hash function will not be generated unless the user actually calls `full_rehash`." gromer@… 13135 boost::filesystem::exists silently fails to work on MSVC with newly created symlink filesystem Boost 1.65.0 To Be Determined Bugs Beman Dawes new 2017-07-25T09:09:54Z 2017-07-25T09:09:54Z "The following program: {{{ #include #include #include #include int main() { boost::system::error_code error; boost::filesystem::create_directories(""dir/subdir"", error); assert(!error); std::ofstream ofs(""dir/subdir/file.txt""); ofs << ""Boost.Filesystem is fun!""; assert(ofs); ofs.close(); boost::filesystem::create_symlink(""dir/subdir/file.txt"", ""symlink"", error); if (!error) { std::cerr << ""Symlink created\n""; assert(boost::filesystem::exists(""symlink"")); } else { std::cerr << ""Failed to create a symlink\n""; boost::filesystem::remove_all(""dir"", error); assert(!error); boost::filesystem::remove(""symlink"", error); assert(!error); } /*if (!error)*/ } /*main*/ }}} Works well on Linux and Windows+MinGW but fails to work on msvc-14.0: {{{ --- Stderr: Symlink created Assertion failed: boost::filesystem::exists(""symlink""), file .\main.cpp, line 20 --- Ret code: 3 }}} Failed run can be found here: https://ci.appveyor.com/project/apolukhin/boost-cookbook/branch/second_edition/job/1ycwqk36phd8h8il P.S.: Code from above worked well a few months ago. Looks like some recent change broke the example." Antony Polukhin 13134 Warnings about the use of 0 as null pointer constant. core Boost Development Trunk To Be Determined Bugs Peter Dimov new 2017-07-24T22:55:36Z 2017-07-24T22:55:36Z `boost/core/lightweight_test_trait.hpp` uses 0 as null pointer constant. Compilers issue warnings about it. This could, however, be easily fixed by, for example, `ifdef`ing on `BOOST_NO_CXX11_NULLPTR`. Shall I create a PR? kot.tom97@… 13133 copy_file does not check file type, can fill disk or hang program if used on certain file types filesystem Boost 1.63.0 To Be Determined Bugs Beman Dawes new 2017-07-24T21:12:13Z 2017-07-24T21:12:13Z "Boost’s copy_file method, when passed non-regular files, can fill up the user’s disk space or hang the program. The copy_file method does not check file type before it begins copying, which can lead to unspecified behavior if the user tries to copy a non-regular (type) file. As only regular files can be properly copied by reading and writing their contents, trying to copy non-regular files in this way can cause problems. For example: - Trying to copy a symlink to the character device /dev/urandom with copy_file will copy random data into the output file indefinitely, quickly filling up the user’s disk. - Trying to copy a FIFO type file with copy_file will result in the program hanging indefinitely if left unattended. This problem can be fixed without too much work by checking the result of the post-open stat call to check that a regular file was opened. I have written up a patch, which I submitted a pull-request for (#48). This problem was found as part of an effort to detect and deal with “environmental” bugs in popular applications (for more information, check out https://works-everywhere.org). It was found using a tool that detects situations where an application fails to correctly handle unusual environmental conditions such as files having an unexpected file type." Ryan Patton 13132 process_event called upon initial on_entry does not wait for on_entry completion. msm Boost 1.64.0 To Be Determined Bugs Christophe Henry new 2017-07-23T19:05:29Z 2017-07-23T19:05:29Z process_event called during initial on_entry does not wait for on_entry completion. Janusz Piwowarski 13131 move_if_not_lvalue_reference undefined under BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE move Boost 1.60.0 To Be Determined Bugs Ion Gaztañaga new 2017-07-21T17:03:02Z 2017-07-21T22:05:21Z "Defining BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE causes the following program to fail compilation for boost-1.60.0 and newer: #define BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE #include int main() { } NOTE: this regression was reported over a year ago on the mailing lists but the message received no reply and nobody ever filed a bug. https://lists.boost.org/boost-users/2015/12/85457.php It appears the fix is simple: move the definition of move_if_not_lvalue_reference() outside the #ifdef for BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE. Untested patch attached." ryan.johnson@… 13130 BOOST_LOCKFREE_CACHELINE_BYTES value is incorrect on s390x lockfree Boost 1.63.0 To Be Determined Bugs timblechmann new 2017-07-21T16:40:28Z 2017-09-20T11:56:13Z "The file include/boost/lockfree/detail/prefix.hpp contains the following code snippet: {{{ // PowerPC caches support 128-byte cache lines. #if defined(powerpc) || defined(__powerpc__) || defined(__ppc__) #define BOOST_LOCKFREE_CACHELINE_BYTES 128 #else #define BOOST_LOCKFREE_CACHELINE_BYTES 64 #endif }}} This sets the cache line size on s390x to 64 bytes. This is incorrect, the correct size is 256 bytes. To fix we just need to add an extra #elif checking for the __s390__/ __s390x__ compiler-defined macros." mike.munday@… 13128 boost asio does not initialize libressl library asio Boost 1.64.0 To Be Determined Bugs chris_kohlhoff new 2017-07-19T22:39:40Z 2018-05-15T20:06:52Z "When using the `libressl` library with boost asio, there is some library initialization code that depends on `OPENSSL_VERSION_NUMBER` that should be executed but it is not because `libressl` identifies itself with `OPENSSL_VERSION_NUMBER 0x20000000L` and the code in question is inside an `#if (OPENSSL_VERSION_NUMBER < 0x10100000L)`or an `#if (OPENSSL_VERSION_NUMBER < 0x10000000L)` The code I'm referring to is in `boost/asio/ssl/detail/impl/openssl_init.ipp` as follows: * in `openssl_init_base::do_init` method there is the following code: {{{ #if (OPENSSL_VERSION_NUMBER < 0x10100000L) ::SSL_library_init(); ::SSL_load_error_strings(); ::OpenSSL_add_all_algorithms(); mutexes_.resize(::CRYPTO_num_locks()); for (size_t i = 0; i < mutexes_.size(); ++i) mutexes_[i].reset(new boost::asio::detail::mutex); ::CRYPTO_set_locking_callback(&do_init::openssl_locking_func); #endif // (OPENSSL_VERSION_NUMBER < 0x10100000L) #if (OPENSSL_VERSION_NUMBER < 0x10000000L) ::CRYPTO_set_id_callback(&do_init::openssl_id_func); #endif // (OPENSSL_VERSION_NUMBER < 0x10000000L) }}} * similarly, in `~do_init()` the following sequence should also execute for libressl: {{{ #if (OPENSSL_VERSION_NUMBER < 0x10000000L) ::CRYPTO_set_id_callback(0); #endif // (OPENSSL_VERSION_NUMBER < 0x10000000L) #if (OPENSSL_VERSION_NUMBER < 0x10100000L) ::CRYPTO_set_locking_callback(0); ::ERR_free_strings(); ::EVP_cleanup(); ::CRYPTO_cleanup_all_ex_data(); #endif // (OPENSSL_VERSION_NUMBER < 0x10100000L) }}} * also in `~do_init()` the `ERR_remove_thread_state` and `ENGINE_cleanup` functions should be called {{{ #elif (OPENSSL_VERSION_NUMBER < 0x10100000L) ::ERR_remove_thread_state(NULL); #endif // (OPENSSL_VERSION_NUMBER < 0x10000000L) }}} {{{ #if !defined(OPENSSL_NO_ENGINE) \ && (OPENSSL_VERSION_NUMBER < 0x10100000L) ::ENGINE_cleanup(); #endif // !defined(OPENSSL_NO_ENGINE) // && (OPENSSL_VERSION_NUMBER < 0x10100000L) }}} * the following `openssl_id_func` and `openssl_locking_func` should also be available for `libressl`, along with the vector of mutexes: {{{ #if (OPENSSL_VERSION_NUMBER < 0x10000000L) static unsigned long openssl_id_func() { #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) return ::GetCurrentThreadId(); #else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) void* id = &errno; BOOST_ASIO_ASSERT(sizeof(unsigned long) >= sizeof(void*)); return reinterpret_cast(id); #endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) } #endif // (OPENSSL_VERSION_NUMBER < 0x10000000L) #if (OPENSSL_VERSION_NUMBER < 0x10100000L) static void openssl_locking_func(int mode, int n, const char* /*file*/, int /*line*/) { if (mode & CRYPTO_LOCK) instance()->mutexes_[n]->lock(); else instance()->mutexes_[n]->unlock(); } // Mutexes to be used in locking callbacks. std::vector > mutexes_; #endif // (OPENSSL_VERSION_NUMBER < 0x10100000L) }}}" ioan pomian 13127 out of bound memory access in integer_sort sort Boost 1.64.0 To Be Determined Bugs Paul A. Bristow new 2017-07-17T05:26:37Z 2017-07-17T05:26:37Z "I called integer_sort() to sort a data array, found a oob access, and crashed. check the code, found it occurs in inner_swap_loop. the code is like the following: target_bin = bins + (rshift(*current, log_divisor) - div_min) but in the previous code, function spreadsort_rec(). the bin count is calculated by the code with a cast (unsigned): unsigned bin_count = unsigned(div_max - div_min) + 1; and the next place in spreadsort_rec() for (RandomAccessIter current = first; current != last;) bin_sizes[unsigned(rshift(*(current++), log_divisor) - div_min)]++; so that, I thought there is a missing cast (unsigned) in inner_swap_loop(). " Jie HE 13125 parse_config_file silently ignores IO errors program_options Boost Release Branch To Be Determined Bugs Vladimir Prus new 2017-07-16T12:21:46Z 2017-07-16T12:44:09Z "The function `parse_config_file` silently ignores I/O errors while reading the configuration file. A easy way to reproduce the bug is to specify a directory as configuration file. On Linux, `open` will succeed but subsequent calls to `read` will fail with `EISDIR`. --- Minimal and complete program to reproduce the problem: {{{#!c++ #include #include #include using namespace boost::program_options; int main(int argc, char *argv[]) { if (argc != 2) { std::cerr << ""Invalid amount of arguments"" << std::endl; return 1; } try { options_description desc(""Desc""); variables_map vm; store(parse_config_file(argv[1], desc), vm); notify(vm); } catch (error &e) { std::cerr << ""Error: "" << e.what() << std::endl; return 1; } std::cerr << ""Everything fine"" << std::endl; return 0; } }}} {{{ $ ./a.out some-non-existent-file Error: can not read options configuration file 'some-non-existent-file' $ ./a.out . Everything fine }}}" Johannes Spangenberg 13123 So confused on building boost. build Boost 1.64.0 To Be Determined Support Requests Vladimir Prus new 2017-07-16T06:32:20Z 2017-07-30T18:26:25Z "I have literally no idea what I'm doing, and nothing is working. Yes that's vague and doesn't help people answer my question but can someone just have a one on one, step by step with me on how to do this. bootstrap.bat doesn't work, the precompiled build.bat doesn't work. I'm confused and frustrated. [I also don't know how these tickets work, so on the off-chance that people can't directly reply to them, hit me up at my provided email address please, thank you!]" scubaventure101@… 13122 Four statics from containers_fwd.hpp should be constexpr container Boost 1.63.0 To Be Determined Bugs Ion Gaztañaga new 2017-07-14T13:34:24Z 2017-07-14T13:34:24Z "We did a study of duplicated global symbols in our modules and found four duplicated symbols coming from boost. Every compilation unit that includes this header will get four of these statics and they will be duplicated in the final executable. We had 525x4 instances of these duplicated globals in just one module. The tool used to find this problem is described here with source code: https://randomascii.wordpress.com/2017/01/08/add-a-const-here-delete-a-const-there static const ordered_range_t ordered_range = ordered_range_t(); static const ordered_unique_range_t ordered_unique_range = ordered_unique_range_t(); static const default_init_t default_init = default_init_t(); static const value_init_t value_init = value_init_t(); It seems all is needed is for the BOOST_CONSTEXPR_OR_CONST to be used instead of 'const'. " robert.mcmillan@… 13121 std_fenced_block gets used for g++ 4.6.4 and hence buggy std::atomic_thread_fence asio Boost 1.64.0 To Be Determined Bugs chris_kohlhoff new 2017-07-13T10:52:36Z 2017-08-09T20:47:58Z "With g++ 4.6.4: using {{{asio}}} code that results in {{{detail::fenced_block}}} being used results in {{{detail::std_fenced_block}}} being used. This uses {{{std::atomic_thread_fence}}} but that has link issues with 4.6 (maybe https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51038). {{{g++4.6 -std=c++0x -I boost... }}} {{{ #include #ifdef BOOST_ASIO_HAS_STD_ATOMIC # pragma message(""Will use asio std_fenced_block"") #endif int main(int argc, char *argv[]) { (void)argc; (void)argv; boost::asio::detail::fenced_block block(boost::asio::detail::fenced_block::full); } }}} boost_asio.cpp:4:51: note: #pragma message: Will use asio std_fenced_block /tmp/ccNS0287.o: In function `boost::asio::detail::std_fenced_block::std_fenced_block(boost::asio::detail::std_fenced_block::full_t)': boost_asio.cpp:(.text._ZN5boost4asio6detail16std_fenced_blockC2ENS2_6full_tE[_ZN5boost4asio6detail16std_fenced_blockC5ENS2_6full_tE]+0x22): undefined reference to `std::atomic_thread_fence(std::memory_order)' /tmp/ccNS0287.o: In function `boost::asio::detail::std_fenced_block::~std_fenced_block()': boost_asio.cpp:(.text._ZN5boost4asio6detail16std_fenced_blockD2Ev[_ZN5boost4asio6detail16std_fenced_blockD5Ev]+0x13): undefined reference to `std::atomic_thread_fence(std::memory_order)' collect2: ld returned 1 exit status It looks like between 1.63 and 1.64, in ''detail/fenced_block.hpp'', the {{{#elif defined(BOOST_ASIO_HAS_STD_ATOMIC)}}} line takes precedence over the specific gcc test. However, {{{BOOST_ASIO_HAS_STD_ATOMIC}}} is defined for 4.6.4. " Richard Hazlewood 13120 optional o. x<(size_t)0 is different to x<0 optional Boost 1.64.0 To Be Determined Bugs Fernando Cacciola new 2017-07-12T08:13:11Z 2017-07-12T15:45:59Z "This is a very subtle but key bug. Comparing slightly different types changes the way the comparison is done. {{{ #include #include int main() { boost::optional x; assert((x < (size_t)0) == (x < 0)); return 0; } }}} result: {{{ $ g++ -g -I boost_1_64_0/ -o test_optional-d test_optional.cpp $ ./test_optional-d $ test_optional.cpp:7: int main(): Assertion `(x < (size_t)0) == (x < 0)' failed. }}} I am scared to think what this might affect in my code... --- I would actually prefer to turn off the implicit cast in operator<(), and only allow : optional < optional I'd rather it throw a compile error and instead force me to do something like if (x && *x < 0) Because I do not always thing 'none' should be 'less than' anything. It should not be comparable. " harris.pc@… 13119 Boost::binomial_heap Merge memcheck error - Merging 9 into 5 heap Boost 1.64.0 To Be Determined Bugs timblechmann new 2017-07-11T19:22:34Z 2017-07-11T19:22:34Z "Binomial heap merge routine reads from uninitialized memory in the attached example. {{{ #include ""boost/heap/binomial_heap.hpp"" typedef boost::heap::binomial_heap Heap; int main(int /*argc*/, char* /*argv*/[]) { Heap heap0; size_t heap0_size = 5; size_t max_range = 100; for (size_t ix = 0; ix < heap0_size; ++ix) { heap0.push(rand() % max_range); } Heap heap1; size_t heap1_size = 9; for (size_t ix = 0; ix < heap1_size; ++ix) { heap1.push(rand() % max_range); } heap0.merge(heap1); } }}} I believe line 693 is incorrectly moving the iterator forwards. If the carry node is inserted before the last node of trees, this line will cause this_iterator to point to trees.end(). However, for this case, it will follow the goto statement and start another iteration which will cause the function to read from out of bounds. " jun.kudo@… 13118 boost.locale, Windows, x64 build: linker looks for ICU libraries in wrong folder (/lib instead of /lib64) locale Boost 1.64.0 To Be Determined Bugs Artyom Beilis new 2017-07-11T05:41:55Z 2017-07-11T05:41:55Z "When building all of boost (64 bit) with ICU, locale fails to link to ICU libs, while other libraries, regex included, succeed.[[BR]] Accidently creating a copy of /lib64/ into /lib/ resolved the issue.[[BR]] Looks like locale searches for ICU libraries in /lib for both 32 and 64 bit builds, while other boost libraries use /lib for 32 builds and /lib64 for 64 bit builds (which is where default ICU build puts them). " zhivkot@… 13117 BTC CODE REALISER BIOT Building Boost Boost Release Branch Boost 1.65.0 Library Submissions new 2017-07-11T02:19:40Z 2017-07-15T17:19:38Z Vadim Kozhukhovskiy 13116 BTC CODE REALISER result_of Boost Release Branch Boost 1.65.0 Bugs Daniel Walker new 2017-07-11T01:36:42Z 2017-07-11T01:36:42Z Vadim Kozhukhovskiy 13114 Multiple signatures for function function Boost 1.63.0 To Be Determined Feature Requests Douglas Gregor new 2017-07-10T18:09:48Z 2017-07-10T18:09:48Z "I am not familiar with boost, just wanted to suggest the possibility of having `function` take multiple signatures {{{#!c++ function f; }}} This is compatible with `std::function`, but unknown feasibility for `boost::function` in its current form. The key idea is to recursively implement `operator()` from the argument list {{{#!c++ template struct erasure_base : erasure_base { virtual Ret operator()(Args&&...) = 0; using erasure_base::operator(); }; }}} Attached file is a proof-of-concept implementation of such functionality." stinkingmadgod@… 13113 "OperationalError: could not extend file ""base/19263/19289"": No space left on deviceHINT: Check free disk space." trac / subversion Boost 1.63.0 To Be Determined Bugs Douglas Gregor new 2017-07-10T18:07:26Z 2017-08-15T08:27:12Z "==== How to Reproduce ==== While doing a GET operation on `/query`, Trac issued an internal error. ''pressed middle mouse click on a keyword in a bug report'' Request parameters: {{{ {u'keywords': u'~multi_index', u'status': u'!closed'} }}} User agent: `#USER_AGENT#` ==== System Information ==== ''System information not available'' ==== Enabled Plugins ==== ''Plugin information not available'' ==== Interface Customization ==== ''Interface customization information not available'' ==== Python Traceback ==== {{{ Traceback (most recent call last): File ""build/bdist.linux-x86_64/egg/trac/web/main.py"", line 623, in _dispatch_request dispatcher.dispatch(req) File ""build/bdist.linux-x86_64/egg/trac/web/main.py"", line 260, in dispatch req.send(output, content_type or 'text/html') File ""build/bdist.linux-x86_64/egg/trac/web/api.py"", line 683, in send self.send_response(status) File ""build/bdist.linux-x86_64/egg/trac/web/main.py"", line 109, in send_response self.session.save() File ""build/bdist.linux-x86_64/egg/trac/web/session.py"", line 169, in save """""", (self.sid, self.last_visit, authenticated)) File ""build/bdist.linux-x86_64/egg/trac/db/util.py"", line 128, in execute cursor.execute(query, params if params is not None else []) File ""build/bdist.linux-x86_64/egg/trac/db/util.py"", line 72, in execute return self.cursor.execute(sql_escape_percent(sql), args) OperationalError: could not extend file ""base/19263/19289"": No space left on device HINT: Check free disk space. }}}" anonymous 13112 uninitialized pointer fields in asio epoll_reactor asio Boost 1.66.0 To Be Determined Bugs chris_kohlhoff new 2017-07-07T14:57:46Z 2017-07-07T14:57:46Z " https://github.com/boostorg/asio/blob/develop/include/boost/asio/detail/impl/epoll_reactor.ipp This was found by a Coverity scan. I can't see a fix for this in the pipeline at all on the latest version. Details from the Coverity scan are below: {{{ 627epoll_reactor::descriptor_state::descriptor_state() 628  : operation(&epoll_reactor::descriptor_state::do_complete) 629{     5. uninit_member: Non-static class member next_ is not initialized in this constructor nor in any functions that it calls.     7. uninit_member: Non-static class member prev_ is not initialized in this constructor nor in any functions that it calls.     9. uninit_member: Non-static class member reactor_ is not initialized in this constructor nor in any functions that it calls.     11. uninit_member: Non-static class member descriptor_ is not initialized in this constructor nor in any functions that it calls.     13. uninit_member: Non-static class member registered_events_ is not initialized in this constructor nor in any functions that it calls.     CID 256705: Uninitialized pointer field (UNINIT_CTOR)15. uninit_member: Non-static class member shutdown_ is not initialized in this constructor nor in any functions that it calls. 630} }}} " ben@… 13111 Out-of-bounds access for asio consuming buffers asio Boost 1.66.0 To Be Determined Bugs chris_kohlhoff new 2017-07-07T14:37:53Z 2017-07-07T14:37:53Z " I have not seen a fix for this in Github for the latest version https://github.com/boostorg/asio/blob/develop/include/boost/asio/detail/consuming_buffers.hpp The issue was found by a coverity scan. All calls to buffers_.end() are being flagged as out-of-bounds access, there is potential for memory corruption here. Coverity is flagging these as High Impacting. Coverity output is below: {{{ 207  // Get a forward-only iterator to the first element. 208  const_iterator begin() const 209  {     1. address_of: Taking address with this->buffers_ yields a singleton pointer.     CID 336466: Out-of-bounds access (ARRAY_VS_SINGLETON)2. callee_ptr_arith: Passing this->buffers_ to function end which uses it as an array. This might corrupt or misinterpret adjacent memory locations. 210    return const_iterator(at_end_, first_, 211        begin_remainder_, buffers_.end(), max_size_); 212  } 213 … 226  // Consume the specified number of bytes from the buffers. 227  void consume(std::size_t size) 228  { 229    // Remove buffers from the start until the specified size is reached.     1. Condition size > 0, taking true branch.     2. Condition !this->at_end_, taking true branch. 230    while (size > 0 && !at_end_) 231    {     3. Condition boost::asio::buffer_size(this->first_) <= size, taking true branch. 232      if (buffer_size(first_) <= size) 233      { 234        size -= buffer_size(first_);     4. address_of: Taking address with this->buffers_ yields a singleton pointer.     CID 336464: Out-of-bounds access (ARRAY_VS_SINGLETON)5. callee_ptr_arith: Passing this->buffers_ to function end which uses it as an array. This might corrupt or misinterpret adjacent memory locations. 235        if (begin_remainder_ == buffers_.end()) 236          at_end_ = true; 237        else 238          first_ = *begin_remainder_++; 239      } 240      else 241      { 242        first_ = first_ + size; 243        size = 0; 244      } 245    } … 247    // Remove any more empty buffers at the start.     12. Condition !this->at_end_, taking true branch.     13. Condition boost::asio::buffer_size(this->first_) == 0, taking true branch. 248    while (!at_end_ && buffer_size(first_) == 0) 249    {     14. address_of: Taking address with this->buffers_ yields a singleton pointer.     CID 336464: Out-of-bounds access (ARRAY_VS_SINGLETON)15. callee_ptr_arith: Passing this->buffers_ to function end which uses it as an array. This might corrupt or misinterpret adjacent memory locations. 250      if (begin_remainder_ == buffers_.end()) 251        at_end_ = true; 252      else 253        first_ = *begin_remainder_++; 254    } 255  } … }}} " ben@… 13110 cannot wait/join process to actually terminate after calling child::terminate process Boost 1.64.0 To Be Determined Bugs new 2017-07-07T09:04:57Z 2017-07-07T09:04:57Z "On Windows child::terminate() calls TerminateProcess, which is asynchronous. I need to wait for the process to actually terminate, but join()/wait() early out because a) _terminated gets set to true and b) the process handle is closed within terminate(). The Unix implementation uses waitpid() after calling kill() to wait for the process state to change, thus the behaviour is different. From MSDN: ""TerminateProcess is asynchronous; it initiates termination and returns immediately. If you need to be sure the process has terminated, call the WaitForSingleObject function with a handle to the process."" Because waiting for a process to actually terminate might take a long time I think it would be best to use a parameter to specify whether terminate() shall wait or not, and allow waiting for the process after calling terminate(). Alternatively please provide a async_terminate() and fix the Windows implementation to wait internally." Christian Maaser 13107 Include guards missing in range/iterator_range_hash.hpp range Boost 1.63.0 To Be Determined Bugs Neil Groves new 2017-07-05T16:48:47Z 2017-07-05T16:48:47Z Header `range/iterator_range_hash.hpp` has no include guard; including the header twice in the same translation unit results in an error about duplicate definition of the function template `::boost::hash_value(const iterator_range&)` Petr Kmoch 13105 Add missing top level include guards function Boost 1.64.0 To Be Determined Bugs Douglas Gregor new 2017-07-03T20:56:21Z 2017-07-03T20:56:21Z "This ticket is addressed by this pull request: https://github.com/boostorg/function/pull/13/files The missing top level include guard means that even if boost/function.hpp is included in a pre-compiled header, we still pay the heavy boost pp pre-processing cost every time it is also included. This is very problematic with Visual Studio intellisense: It pre-process and parses the translation unit on the fly to provide syntax/semantic highlighting. In our projects, this fix remove a couple of seconds in this process. (boost/function.hpp is included in many headers that result in pre-processing it multiple time per compilation units)" anonymous 13103 Documentation: Line-by-line I/O example should use asio process Boost 1.64.0 To Be Determined Bugs new 2017-06-30T08:50:17Z 2017-06-30T08:50:17Z "The boost::process Tutorial needs some improvements: When following the example ""[http://www.boost.org/doc/libs/1_64_0/doc/html/boost_process/tutorial.html#boost_process.tutorial.io Synchronous I/O]"" the output may be incomplete. Actually, this is even stated in the [http://www.boost.org/doc/libs/1_64_0/doc/html/boost_process/faq.html#boost_process.faq.closep FAQ]: ""But, since pipes are buffered, you might get incomplete data if you do this: It is therefore highly recommended that you use the asynchronous api if you are not absolutely sure how the output will look."" Not retrieving all data is not something to be generally expected; therefore this should be stated clearly in the tutorial's example. A new example should provide a solution to the problem. (Would have saved me hours of work!) Or even better, since the asynchronous api is highly recommended anyway, why not deprecate synchronous IO and replace the example completely? The new/additional example could look somewhat like this: {{{ #include #include #include #include // capture process output line by line int main() { const std::string file = ""file""; namespace bp = boost::process; bp::opstream os; struct IoData { bp::async_pipe ap; // Pipe to be used by the stream std::vector buffer; std::mutex streamMutex; std::string keepline; // Store incomplete data std::function callback; IoData(boost::asio::io_service& ios_, std::function callback_) : ap(ios_) , buffer(512) // Set arbitrary buffer size here! , callback(callback_) { } }; // set up async io boost::asio::io_service ios; // Prepare capturing both stdout and stderr IoData err(ios, [](const std::string& s){ std::cout << ""cerr: "" << s < out.ap, bp::std_err > err.ap, ios); std::function beginRead = [&](IoData& io) { io.ap.async_read_some(boost::asio::buffer(io.buffer, io.buffer.size()), [&](const boost::system::error_code &ec, std::size_t size) { std::lock_guard guard(io.streamMutex); std::string str(io.buffer.data(), size); std::stringstream stream(io.keepline + str); std::string line; while (std::getline(stream, line)) { io.callback(line); } if (stream.eof()) { io.keepline = line; } else { io.keepline = """"; } if (ec.value() != 0) { return; } beginRead(io); }); }; beginRead(err); beginRead(out); ios.run(); process.wait(); }; }}} " joshua.hopp@… 13102 Executable not relinking if related static libraries are changed. build Boost 1.63.0 To Be Determined Bugs Vladimir Prus new 2017-06-28T07:16:03Z 2018-01-23T00:05:10Z I am trying to build an executable which depends on static libraries,say a and b. When there are changes in a or b and we try to recompile the executable, it does not gets updated. It just assumes that all targets are built and there are no new changes. Uttkarsh 13101 multiplication overflow issue rational Boost 1.63.0 To Be Determined Feature Requests Daryle Walker new 2017-06-27T20:34:04Z 2017-07-30T18:25:27Z "The following code will result in erroneous output due to integer overflow. {{{ rational x {1, INT_MAX}; rational y {1, 2}; rational z = x * y; // will result in error due to overflow }}} The relevant section of the library code - rational.hpp line 500 is {{{ // Avoid overflow and preserve normalization IntType gcd1 = integer::gcd(num, r_den); IntType gcd2 = integer::gcd(r_num, den); num = (num/gcd1) * (r_num/gcd2); den = (den/gcd2) * (r_den/gcd1); }}} which, in spite of comment, does not implement any checking for overflow. The same argument applies to addition and likely other operations. Division does check for divide by zero and throws an exception. The documentation itself is kind of cagey on the issue. In spite of having opened this issue I'm not sure what I really want to ask for. Sorry about this. Longer term I would hope to see rational and multi precision integers not include any checking and permit safe integer do it. But of course I'm not there yet. " Robert Ramey 13100 How can I post move only handler? asio Boost 1.63.0 To Be Determined Bugs chris_kohlhoff new 2017-06-27T08:22:41Z 2017-06-27T08:22:41Z How can I post move only handler? It seems there is no need require the handler copyable. I don't want wrap my handler with shared_ptr. 136002018@… 13099 How about adding BOOST_CONSEXPR to functions in rational where appropriate rational Boost 1.63.0 To Be Determined Feature Requests Daryle Walker new 2017-06-26T18:02:30Z 2017-06-27T08:53:38Z How about adding BOOST_CONSEXPR to functions in rational where appropriate. I shouldn't create any problems and would make boost rational more useful in current code. Robert Ramey 13098 geometry::touches return wrong result on two polygons geometry Boost 1.63.0 To Be Determined Bugs Barend Gehrels new 2017-06-26T16:28:51Z 2017-10-12T11:01:20Z "touches should returns true: {{{ #include #include #include #include #include #include #include typedef boost::geometry::model::d2::point_xy P; boost::geometry::model::polygon polygon1, polygon2; boost::geometry::append(polygon1, boost::make_tuple(32.0f, -0.00438580196f)); boost::geometry::append(polygon1, boost::make_tuple(32.0f, -4.0f)); boost::geometry::append(polygon1, boost::make_tuple(37.0f, -4.0f)); boost::geometry::append(polygon1, boost::make_tuple(37.0f, -0.00438580057f)); boost::geometry::append(polygon2, boost::make_tuple(32.0f, 20.0f)); boost::geometry::append(polygon2, boost::make_tuple(32.0f, -0.00438580196f)); boost::geometry::append(polygon2, boost::make_tuple(37.0f, -0.00438580057f)); boost::geometry::append(polygon2, boost::make_tuple(43.0f, -0.00438579917f)); boost::geometry::append(polygon2, boost::make_tuple(43.0f, 20.0f)); assert(boost::geometry::touches(polygon1, polygon2) == true); }}} " bruno.deligny@… 13096 boost::geometry::intersection results depend on polypoints inputorder geometry Boost 1.64.0 To Be Determined Bugs Barend Gehrels new 2017-06-26T11:59:02Z 2017-06-26T12:36:32Z "Hello, when calculating the intersection of the givin polygons, the result depends on the order of the inputpoints. {{{ #include #include #include int main(int argc, char* argv[]) { typedef boost::geometry::model::polygon> boost_polygon; boost_polygon RedPoly, GreenPoly, RedPolyReverted, GreenPolyReverted; boost::geometry::read_wkt(""POLYGON((864.11024748062812 524.94908797221251, 881.01048034069004 524.77831898197212, 877.68802698783907 501.82023487475703, 860.75736496460991 501.99865072086430, 864.11024748062812 524.94908797221251))"", RedPoly); boost::geometry::read_wkt(""POLYGON((864.62221751510151 524.94391475320754, 868.20628459909278 524.90769942280622, 864.93694798456659 502.47800172931238, 861.34657616182551 502.51580174027310, 864.62221751510151 524.94391475320754))"", GreenPoly); boost::geometry::read_wkt(""POLYGON((860.75736496460991 501.99865072086430, 877.68802698783907 501.82023487475703, 881.01048034069004 524.77831898197212, 864.11024748062812 524.94908797221251, 860.75736496460991 501.99865072086430))"", RedPolyReverted); boost::geometry::read_wkt(""POLYGON((861.34657616182551 502.51580174027310, 864.93694798456659 502.47800172931238, 868.20628459909278 524.90769942280622, 864.62221751510151 524.94391475320754, 861.34657616182551 502.51580174027310))"", GreenPolyReverted); boost::geometry::correct(RedPoly); boost::geometry::correct(GreenPoly); boost::geometry::correct(RedPolyReverted); // reverts order of points and is now equal it RedPoly boost::geometry::correct(GreenPolyReverted); // reverts order of points and is now equal it GreenPoly std::list output; boost::geometry::intersection(RedPoly, GreenPoly, output); // error: output is empty std::list outputReverted; boost::geometry::intersection(RedPolyReverted, GreenPolyReverted, outputReverted); // correct: outputReverted.front equals GreenPoly return 0; } }}} " kle@… 13092 "Serializing pointer makes sanitizer complain about ""reference binding to misaligned address""" serialization Boost 1.63.0 To Be Determined Bugs Robert Ramey new 2017-06-23T08:48:25Z 2017-08-11T12:41:00Z "Consider the following program: {{{ #include #include #include #include #include struct S { int i; char c; template void serialize(Archive & ar, const unsigned int version) { ar & i; ar & c; } }; int main() { const auto s0 = std::make_shared(); s0->i = 42; s0->c = 'c'; std::stringstream ss; { boost::archive::text_oarchive oa(ss); oa << s0; } std::shared_ptr s1; { boost::archive::text_iarchive ia(ss); ia >> s1; } return 0; } }}} What is important is that we use a pointer to the struct. I then get the following output, which seems to be a real issue probably mitigated by x86's lax requirements on alignment: {{{ % g++ -lboost_serialization -fsanitize=address -fsanitize=leak -fsanitize=undefined -fsanitize=shift -fsanitize=integer-divide-by-zero -fsanitize=unreachable -fsanitize=vla-bound -fsanitize=null -fsanitize=return -fsanitize=signed-integer-overflow -fsanitize=bounds -fsanitize=alignment -fsanitize=object-size -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fsanitize=nonnull-attribute -fsanitize=returns-nonnull-attribute -fsanitize=bool -fsanitize=enum -fno-sanitize=vptr t.cpp&& LD_PRELOAD=/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/libasan.so ./a.out % LD_PRELOAD=/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/libasan.so ./a.out /usr/include/boost/archive/detail/iserializer.hpp:540:19: runtime error: reference binding to misaligned address 0x000000000002 for type 'struct S', which requires 4 byte alignment 0x000000000002: note: pointer points here /usr/include/boost/archive/detail/iserializer.hpp:541:67: runtime error: reference binding to misaligned address 0x000000000002 for type 'const struct S', which requires 4 byte alignment 0x000000000002: note: pointer points here % LD_PRELOAD=/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/libasan.so ./a.out % LD_PRELOAD=/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/libasan.so ./a.out /usr/include/boost/archive/detail/iserializer.hpp:540:19: runtime error: reference binding to misaligned address 0x000000000002 for type 'struct S', which requires 4 byte alignment 0x000000000002: note: pointer points here /usr/include/boost/archive/detail/iserializer.hpp:541:67: runtime error: reference binding to misaligned address 0x000000000002 for type 'const struct S', which requires 4 byte alignment 0x000000000002: note: pointer points here }}} Note how it only occurs sometimes, probably depending on what memory address happened to have been returned. " fiesh@… 13089 Boost::binomial_heap Sanity check error heap Boost 1.64.0 To Be Determined Bugs timblechmann new 2017-06-20T18:00:21Z 2017-06-20T18:30:04Z "Configured with BOOST_HEAP_SANITYCHECKS turned on. Binomial heap hits an assertion failure (BOOST_HEAP_ASSERT(top_element == found_top)) when pushing nodes with the same priority. {{{ #include ""boost/heap/binomial_heap.hpp"" typedef boost::heap::binomial_heap Heap; int main(int argc, char* argv[]) { Heap heap0; heap0.push(1); heap0.push(1); } }}} " jun.kudo@… 13088 Boost::binomial_heap Merge memcheck error heap Boost 1.64.0 To Be Determined Bugs timblechmann new 2017-06-20T17:46:01Z 2017-06-20T17:46:01Z "Binomial heap merge routine reads from uninitialized memory in the attached example. {{{ #include ""boost/heap/binomial_heap.hpp"" typedef boost::heap::binomial_heap Heap; int main(int /*argc*/, char* /*argv*/[]) { Heap heap0; size_t heap0_size = 3; size_t max_range = 100; for (size_t ix = 0; ix < heap0_size; ++ix) { heap0.push(rand() % max_range); } Heap heap1; size_t heap1_size = 5; for (size_t ix = 0; ix < heap1_size; ++ix) { heap1.push(rand() % max_range); } heap0.merge(heap1); } }}} I believe the error stems from the case identified by line 699 in binomial_heap.hpp. If the last node of trees is erased in this line (as is the case in this example), this_iterator now points to trees.end(). However, for this case, it will follow the goto statement and start another iteration which will cause the function to again read from this_iterator. " jun.kudo@… 13087 Boost::binomial_heap Merge error heap Boost 1.64.0 To Be Determined Bugs timblechmann new 2017-06-20T17:27:54Z 2017-06-20T17:27:54Z "Configured with BOOST_HEAP_SANITYCHECKS turned on. Binomial heap hits an assertion failure during the second merge routine in the attached example. {{{ #include ""boost/heap/binomial_heap.hpp"" typedef boost::heap::binomial_heap Heap; int main(int argc, char* argv[]) { Heap heap0; size_t heap0_size = 13; size_t max_range = 100; for (size_t ix = 0; ix < heap0_size; ++ix) { heap0.push(rand() % max_range); } Heap heap1; size_t heap1_size = 5; for (size_t ix = 0; ix < heap1_size; ++ix) { heap1.push(rand() % max_range); } heap0.merge(heap1); Heap heap2; size_t heap2_size = 1; for (size_t ix = 0; ix < heap2_size; ++ix) { heap2.push(rand() % max_range); } heap2.merge(heap0); } }}} When heap1 is merged into heap0, the underlying forest incorrectly contains two 2-degree trees. This error is later caught in a sanity assertion check when heap0 is merged into heap2. I believe the error stems the case identified by line 668 in binomial_heap.hpp. When the two root degrees are equal and a carry tree with degree less than both exist, the carry tree is inserted into trees. However, after this insertion, the this_iterator is incorrectly iterated forward which causes the algorithm to behave incorrectly. In the case provided above, this causes the merge algorithm to skip the degree-2 / degree-2 merge between this and rhs, and instead causes rhs's degree-2 tree to be simple inserted into trees. " jun.kudo@… 13086 Exception Throw -> { boost::asio::ip::tcp::aceptor * acceptor->open(); } asio Boost 1.63.0 To Be Determined Support Requests chris_kohlhoff new 2017-06-20T15:01:48Z 2017-06-20T15:01:48Z " {{{ asio.h #include ""boost/asio.hpp"" struct SNetGlobal { static boost::asio::io_service * GetStcIOService(); static bool RunIOServiceInThreads(int nCountThr = 1); }; asio.cpp #include ""asio.h"" #include #include static boost::asio::io_service * s_io_service = NULL; static std::vector s_thread_pool; io_service * SNetGlobal::GetStcIOService() { if (!s_io_service) { s_io_service = new io_service; } return s_io_service; } bool SNetGlobal::RunIOServiceInThreads(int nCountThr) { while (nCountThr--) { s_thread_pool.emplace_back([=] { s_io_service->run(); }); } return true; } listener.h class CUCListener { public: void Start(); void OnAccept(const boost::system::error_code & ec); private: tcp::acceptor * m_pAcceptor; tcp::socket * m_pSocket; }; listener.cpp #include ""asio.h"" #include ""listener.h"" void CUCListener ::Start() { tcp::endpoint endpoint(tcp::v4(), 1974); m_pAcceptor = new tcp::aceptor(*SNetGlobal::GetStcIOService()); m_pAcceptor->open(endpoint.protocol()); m_pAcceptor->set_option(tcp::acceptor::reuse_address(true)); m_pAcceptor->bind(endpoint); m_pAcceptor->listen(); m_pAcceptor->async_accept(*m_pSocket, boost::bind(&CUCListener::OnAccept, this, boost::asio::placeholders::error)); SNetGlobal::RunIOServiceInThreads(); } void CUCListener::OnAccept(const boost::system::error_code & ec) { std::cout << ""Accept Success"" << std::endl; } }}} Hi, sometimes throw exception and function CUCListener::OnAccept not called when connected socket_ops.ipp {{{ socket_type socket(int af, int type, int protocol, boost::system::error_code& ec) { clear_last_error(); #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) socket_type s = error_wrapper(::WSASocketW(af, type, protocol, 0, 0, WSA_FLAG_OVERLAPPED), ec); // Exception Throw if (s == invalid_socket) return s; ... } }}} " ya.tarakanov.ilya@… 13085 Bad command line escaping for Windows shell process Boost 1.64.0 To Be Determined Bugs new 2017-06-20T08:53:02Z 2017-06-20T08:58:01Z "I'm trying to launch a command with the windows shell: {{{ #!bash call ""%VS140COMNTOOLS%\vsvars32.bat"" }}} so the source is: (i have to escape the double-quotes and antislash) {{{ #!c++ std::string getCommandLine() { return ""call \""%VS140COMNTOOLS%\\vsvars32.bat\"""" } bp::child child(getCommandLine(), bp::shell); }}} The problem is that Boost is double-escaping the double-quotes, and the windows shell does not understand that: {{{ Error: '\""C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\\vsvars32.bat\""' is not recognized as an internal or external command, operable program or batch file. The problem resides here : boost/process/detail/windows/basic_cmd.hpp :35 :48 :72 I just had to comment these lines to fix the command line and spawn the shell with the correct args. }}} " Salamandar 13084 boost::filesystem::exists returns false on existing pathnames on OSX systems filesystem Boost 1.64.0 To Be Determined Bugs Beman Dawes new 2017-06-19T20:50:40Z 2017-06-19T20:50:40Z "boost::filesystem::exists returns false on existing pathnames, surprisingly. This behaviour could be observed at least on OSX El Capitan (10.11.6) with Boost 1.64.0 On Linux, the same code works fine. For confirmation and reproduction, I provide a self-contained code that displays the output of three tests of file existence. It expects a pathname as its first (and only) argument. Here are the outputs that it gives me on Linux and OSX (when applied to an existing pathname): Linux:[[BR]] reply of boost::filesystem::exists: true[[BR]] reply of stat_exists: true[[BR]] reply of stream_exists: true[[BR]] OSX:[[BR]] reply of boost::filesystem::exists: false[[BR]] reply of stat_exists: true[[BR]] reply of stream_exists: true[[BR]] " fabrice.ducos@… 13083 msvc c++14 permissive- unrecognizable template declaration Building Boost Boost 1.64.0 To Be Determined Bugs new 2017-06-19T12:21:43Z 2017-12-26T01:04:00Z "MS has come out with /permissive- (read more: https://blogs.msdn.microsoft.com/vcblog/2016/11/16/permissive-switch/) This resulted in these errors: 1>C:\Dev\Couloir\3pLibs\Boost\boost_1_64_0\boost/typeof/msvc/typeof_impl.hpp(125): error C2988: unrecognizable template declaration/definition (compiling source file Wt\WGLWidget.C) 1>C:\Dev\Couloir\3pLibs\Boost\boost_1_64_0\boost/typeof/msvc/typeof_impl.hpp(133): note: see reference to class template instantiation 'boost::type_of::msvc_extract_type' being compiled (compiling source file Wt\WGLWidget.C) 1>C:\Dev\Couloir\3pLibs\Boost\boost_1_64_0\boost/typeof/msvc/typeof_impl.hpp(125): error C2143: syntax error: missing ';' before '<' (compiling source file Wt\WGLWidget.C) 1>C:\Dev\Couloir\3pLibs\Boost\boost_1_64_0\boost/typeof/msvc/typeof_impl.hpp(125): error C2913: explicit specialization; 'boost::type_of::id2type_impl' is not a specialization of a class template (compiling source file Wt\WGLWidget.C) 1>C:\Dev\Couloir\3pLibs\Boost\boost_1_64_0\boost/typeof/msvc/typeof_impl.hpp(125): error C2059: syntax error: '<' (compiling source file Wt\WGLWidget.C) 1>C:\Dev\Couloir\3pLibs\Boost\boost_1_64_0\boost/typeof/msvc/typeof_impl.hpp(126): error C2334: unexpected token(s) preceding '{'; skipping apparent function body (compiling source file Wt\WGLWidget.C) I searched and found this: https://svn.boost.org/trac10/ticket/4593 So, I defined _MSC_EXTENSIONS But I got the same errors. Any help would be greatly appreciated. " Gunnar 13082 Add a way to identify the executable as a boost-test test Boost 1.64.0 To Be Determined Feature Requests Gennadiy Rozental new 2017-06-19T08:39:36Z 2017-06-30T19:46:12Z "I propose to standardise a command-line option to identify the executable as a certain kind of test: I will propose this to boost.test and google.test as well. My personal usecase is the identification of tests for BoostTestUi (the name is somewhat misleading, it is a test-runner for google-, boost-, catch- and nunit- tests, see github/BoostTestUi.) Currently this requires re-compilation of the test with a special header, I would like to prevent the need for that. --test-runner-identification framework: boost.test version: x.x --test-runner-identification framework: google.test version: x.x --test-runner-identification framework: catch.test version: x.x This will allow test-runners to identify the test-framework used to build the test. That way the test-runners can know what command-line parameters are available to do things like: - list all the tests - run specific tests finally, to let the user attach a debugger to the test this kind of code could added in the main(): (for catch that may already exist, I did not check) notice that this option can have any name, we need only 1 standardised option --test-runner-identification, because once we know what we're dealing with, we can just use the respective command-line options. if (arg == ""--gui-wait"") { std::cout << ""#waiting"" << std::endl; std::getchar(); } " jan.wilmans@… 13081 Xpressive crashes in release if auto keyword used. xpressive Boost 1.62.0 To Be Determined Bugs Eric Niebler new 2017-06-18T21:29:46Z 2017-06-18T21:31:41Z "This code. #include ""boost/xpressive/xpressive.hpp"" int main() { using namespace boost::xpressive; auto scheme = (s1 = +_w) >> ""://""; auto host_ipv6 = (s2 = ('[' >> +(xdigit | ':') >> ']')); cregex uri_re = scheme >> host_ipv6; cmatch m; if( regex_match( ""http://[fe::]"", m, uri_re ) ) { // [first, last) pair of iterators, with implicit operator string() std::string protocol = m[1]; protocol = protocol; } return 0; } Crashes with access violation to random address. Visual Studio 2015 **RELEASE** builds only (for both 32/64 bit builds). " Evgeny Yashin 13078 boost::geometry::intersection between a polygon and a box produces incorrect results geometry Boost 1.59.0 To Be Determined Bugs Barend Gehrels new 2017-06-16T18:24:56Z 2017-07-30T18:22:40Z "I am intersecting a polygon with a box and with a polygon of the same points as the box. The result from box intersection is incorrect - it is a large as the original polygon. Here is the code: {{{ #include ` #include #include namespace bg = boost::geometry; namespace bgm = bg::model; typedef double base_type; typedef bgm::d2::point_xy point_type; typedef bgm::polygon polygon_type; typedef bgm::multi_polygon multipolygon_type; int main() { std::vector points { {7.99922500000000127329e+02, 1.04990090625000011642e+04}, {7.99922500000000013642e+02, 9.99905624999999963620e+03}, {3.99961250000000006821e+02, 9.99905624999999963620e+03}, {3.99961250000000006821e+02, 1.04990090625000011642e+04}, {7.99922500000000127329e+02, 1.04990090625000011642e+04}, }; polygon_type poly; bg::assign_points(poly, points); bgm::box box( {5.99941874999999981810e+02, 1.02490326562500013097e+04}, {7.99922500000000013642e+02, 1.04990090625000011642e+04} ); std::vector box_points { {5.99941874999999981810e+02, 1.02490326562500013097e+04}, {5.99941874999999981810e+02, 1.04990090625000011642e+04}, {7.99922500000000013642e+02, 1.04990090625000011642e+04}, {7.99922500000000013642e+02, 1.02490326562500013097e+04}, {5.99941874999999981810e+02, 1.02490326562500013097e+04}, }; polygon_type box2; bg::assign_points(box2, box_points); multipolygon_type out; bg::intersection(poly, box, out); std::cout << bg::area(out) << "" "" << bg::wkt(out) << std::endl; multipolygon_type out2; bg::intersection(poly, box2, out2); std::cout << bg::area(out2) << "" "" << bg::wkt(out2) << std::endl; return 0; } }}} And this is the output: {{{ 199962 MULTIPOLYGON(((599.942 10499,799.923 10499,799.923 9999.06,399.961 9999.06,399.961 10499,599.942 10499))) 49990.4 MULTIPOLYGON(((799.923 10249,599.942 10249,599.942 10499,799.923 10499,799.923 10249))) }}} Is this expected?" David R 13076 Compilation error on MSVC2015+ on base_from_member used in a class with __declspec(dllexport) utility Boost 1.64.0 To Be Determined Bugs No-Maintainer new 2017-06-15T15:54:17Z 2017-07-02T19:51:15Z "Consider the following code: {{{ //#define BOOST_NO_CXX11_VARIADIC_TEMPLATES #include class __declspec(dllexport) Foo : public boost::base_from_member { public: }; }}} It fails to compile with the following error: {{{ example.cpp /opt/compiler-explorer/libs/boost_1_64_0\boost/utility/base_from_member.hpp(135): error C2061: syntax error: identifier 'T' /opt/compiler-explorer/libs/boost_1_64_0\boost/utility/base_from_member.hpp(135): note: This diagnostic occurred in the compiler generated function 'boost::base_from_member::base_from_member(T &&...) noexcept()' /opt/compiler-explorer/libs/boost_1_64_0\boost/utility/base_from_member.hpp(136): error C2056: illegal expression /opt/compiler-explorer/libs/boost_1_64_0\boost/utility/base_from_member.hpp(136): note: This diagnostic occurred in the compiler generated function 'boost::base_from_member::base_from_member(T &&...) noexcept()' /opt/compiler-explorer/libs/boost_1_64_0\boost/utility/base_from_member.hpp(135): error C2660: 'operator new': function does not take 2 arguments /opt/compiler-explorer/libs/boost_1_64_0\boost/utility/base_from_member.hpp(135): note: while compiling class template member function 'boost::base_from_member::base_from_member<,void>(void) noexcept()' /opt/compiler-explorer/libs/boost_1_64_0\boost/utility/base_from_member.hpp(135): error C2056: illegal expression Microsoft (R) C/C++ Optimizing Compiler Version 19.10.25017 for x64 Copyright (C) Microsoft Corporation. All rights reserved. Compiler exited with result code 2 }}} See https://godbolt.org/g/CqFg8t If I add the `BOOST_NO_CXX11_VARIADIC_TEMPLATES` define, the issue goes away. The issue affects both MSVC 2015 and MSVC 2017. Even if the underlying cause is the compiler error (to be checked), the issue should at least be prevented by proper compiler version detection. This affects other boost libraries relying on base_from_member, like Boost.Iostreams." mwu 13075 gzip_decompressor cannot be pushed to filtering_stream if provided with input_seekable iostreams Boost 1.63.0 To Be Determined Bugs Jonathan Turkanis new 2017-06-15T14:46:12Z 2018-01-13T17:36:00Z "There is a ticket regarding making filtering stream seekable: [https://svn.boost.org/trac/boost/ticket/2449] However, the solution doesn't apply to situations where gzip decompressor is pushed. boost::iostreams::filtering_stream instream; boost::iostreams::file_source file(filename, std::ios_base::in | std::ios_base::binary); instream.push(boost::iostreams::gzip_decompressor()); // -> fails HERE instream.push(file);" hellohee 13074 boost/mpi/detail/mpi_datatype_primitive.hpp still includes boost/serialization/detail/get_data.hpp although get_data.hpp is no longer there mpi Boost 1.64.0 To Be Determined Bugs Matthias Troyer new 2017-06-14T15:33:44Z 2017-07-13T17:57:23Z Not sure how this passed the build & test before release? anonymous 13073 boost tokenizer_functions explicit char_separator() ctor does not initialize m_output_done tokenizer Boost 1.54.0 To Be Determined Bugs jsiek new 2017-06-14T13:35:50Z 2017-06-17T18:14:20Z "This was identified in a Coverity scan. I checked the development tip in GitHub (https://github.com/boostorg/tokenizer/blob/develop/include/boost/token_functions.hpp) and I did not see a fix for this issue. explicit char_separator() : m_use_ispunct(true), m_use_isspace(true), CID 25905 (#1 of 1): Uninitialized scalar field (UNINIT_CTOR)2. uninit_member: Non-static class member m_output_done is not initialized in this constructor nor in any functions that it calls. m_empty_tokens(drop_empty_tokens) { } " jim.king@… 13072 boost::geometry::intersection different results for CCW and CW geometry Boost 1.64.0 To Be Determined Bugs Barend Gehrels assigned 2017-06-14T10:57:24Z 2017-06-14T13:13:25Z "Hello,[[BR]] when calculating the intersection between these two polygons the results differ dependent on the orientation (CW vs CCW). {{{ #include #include #include int main(int argc, char* argv[]) { typedef boost::geometry::model::polygon, true, false > boost_polygon_CW_Open; typedef boost::geometry::model::polygon, false, false > boost_polygon_CCW_Open; const std::string strPoly1( ""POLYGON((986.53314901320903 603.61376367962623, 1014.6804499149767 602.74037774442763, 1018.1411735073581 623.97665453539310, 990.14493850604447 624.49725628790509))"" ); const std::string strPoly2( ""POLYGON((986.77183669558929 603.60635741124452, 998.79457181965154 603.23330253835934, 1002.2613711877982 623.79581100129735, 990.30090761267468 624.02156931285253))"" ); boost_polygon_CW_Open p1_cw_open, p2_cw_open; boost::geometry::read_wkt(strPoly1, p1_cw_open); boost::geometry::read_wkt(strPoly2, p2_cw_open); boost::geometry::correct(p1_cw_open); // reverts order of points boost::geometry::correct(p2_cw_open); // reverts order of points std::vector output_cw; boost::geometry::intersection(p1_cw_open, p2_cw_open, output_cw); // correct: output_cw.front equals poly2 boost_polygon_CCW_Open p1_ccw_open, p2_ccw_open; boost::geometry::read_wkt(strPoly1, p1_ccw_open); boost::geometry::read_wkt(strPoly2, p2_ccw_open); boost::geometry::correct(p1_ccw_open); // no modification boost::geometry::correct(p2_ccw_open); // no modification std::vector output_ccw; boost::geometry::intersection(p1_ccw_open, p2_ccw_open, output_ccw); // incorrect: output_cw is empty!!! return 0; } }}} " kle@… 13066 boost_1_64_0 build error Building Boost Boost 1.64.0 To Be Determined Bugs new 2017-06-14T01:43:45Z 2017-06-14T01:43:45Z " when i build boost with command: bootstrap.bat b2 --toolset=msvc-14.0 architecture=x86 address-model=64 link=static --build-type=complete --with-system --with-thread --with-date_time --with-filesystem --with-serialization --with-atomic then, in my project i use #include ""boost/date_time.hpp"" i get the error...,the right file should be libboost_date_time-vc140-mt-1_64.lib isn't it? 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK1104 无法打开文件“libboost_date_time-vc140-mt-1_60.lib” Tool E:\Design\Work\Tool\LINK 1 " anonymous 13065 boost_1_64_0 build error Building Boost Boost 1.64.0 To Be Determined Bugs new 2017-06-14T01:43:00Z 2017-06-14T01:43:00Z " when i build boost with command: bootstrap.bat b2 --toolset=msvc-14.0 architecture=x86 address-model=64 link=static --build-type=complete --with-system --with-thread --with-date_time --with-filesystem --with-serialization --with-atomic then, in my project i use #include ""boost/date_time.hpp"" i get the error...,the right file should be libboost_date_time-vc140-mt-1_64.lib isn't it? 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK1104 无法打开文件“libboost_date_time-vc140-mt-1_60.lib” Tool E:\Design\Work\Tool\LINK 1 " anonymous 13063 error C2668: 'boost::next' : ambiguous call to overloaded function utility Boost 1.63.0 To Be Determined Bugs Andrey Semashev new 2017-06-10T02:12:42Z 2017-07-31T11:07:44Z "Hello, I want to build the ARtoolkit libary ARvrml from the source with Visual Studio 2013 on Windows 10. When compiling the project 'ARvrml' I get the above mentionel error message : error C2668: 'boost::next' : ambiguous call to overloaded function Since I compile a premade library, I don't know how to help the problem. I use ARToolkit 5.3.2, the code is accessible here: https://github.com/artoolkit/artoolkit5 Furthermore I use the boost library provided by OpenVRML 0.16.6 (windows). Thanks for your help, Best Regards, Roxana " Roxana 13062 LNK2019 Unresolved External Symbol in VS2015 when using Boost python3 and numpy3 libraries on Windows python USE GITHUB Boost 1.64.0 To Be Determined Bugs Ralf W. Grosse-Kunstleve new 2017-06-09T10:03:35Z 2017-06-09T10:03:35Z "I am getting linker errors when trying to use the numpy3 library on Windows: {{{ test_boost_python.obj : error LNK2019: unresolved external symbol ""class boost::python::numpy::dtype __cdecl boost::python::numpy::detail::get_float_dtype<32>(void)"" (??$get_float_dtype@$0CA@@detail@numpy@python@boost@@YA?AVdtype@123@XZ) referenced in function ""public: static class boost::python::numpy::dtype __cdecl boost::python::numpy::detail::builtin_dtype::get(void)"" (?get@?$builtin_dtype@M$0A@@detail@numpy@python@boost@@SA?AVdtype@345@XZ) }}} Small test program to reproduce: {{{#!c++ #include #include namespace bp = boost::python; namespace np = boost::python::numpy; np::ndarray test_make_zeros(int rows, int cols) { return np::zeros(bp::make_tuple(rows, cols), np::dtype::get_builtin()); } BOOST_PYTHON_MODULE(test_boost_numpy) { np::initialize(); bp::def(""test_make_zeros"", test_make_zeros); } }}} I have downloaded and built Boost 1.64 on Windows by using the following command: {{{ b2 --build-type=complete address-model=64 toolset=msvc stage }}} I added a user-config.jam file in my home directory to tell Boost where to find Python 3: {{{ using python : 3.6 : c:\\anaconda3\\python ; }}} I am using the following CMakeLists.txt file: {{{ cmake_minimum_required(VERSION 3.8) project(test_boost_python) set(BOOST_ROOT ""C:/Boost-1.64"") SET(Boost_ADDITIONAL_VERSIONS 1.64) find_package(PythonLibs 3.6 REQUIRED) include_directories(${PYTHON_INCLUDE_DIRS}) find_package(Boost REQUIRED COMPONENTS python3 numpy3) include_directories(${Boost_INCLUDE_DIRS}) link_directories(${Boost_LIBRARY_DIRS}) add_library(test_boost_python SHARED test_boost_python.cpp) set_target_properties(test_boost_python PROPERTIES PREFIX """" SUFFIX "".pyd"") set_target_properties(test_boost_python PROPERTIES DEFINE_SYMBOL ""BOOST_ALL_NO_LIB"") target_link_libraries(test_boost_python ${PYTHON_LIBRARIES} ${Boost_LIBRARIES}) }}} My boost::python library is given the name boost_python3-vc140-mt-1_64.lib and boost::numpy ends up as boost_numpy3-vc140-mt-1_64.lib when linking against Python 3.6. I had to turn on BOOST_ALL_NO_LIB. If not, the compiler looks for boost_python-vc140-mt-1_64.lib boost_numpy-vc140-mt-1_64.lib (which is under the wrong name, with a missing number 3 after the library names; possibly also a bug on Windows?) See also https://stackoverflow.com/questions/44072440/lnk2019-unresolved-external-symbol-in-vs2015-when-using-boost-python3-and-numpy3 for more information" oystein@… 13059 Getting attached error when trying to use property_tree header property_tree Boost 1.64.0 To Be Determined Bugs Sebastian Redl new 2017-06-08T09:59:03Z 2017-06-09T06:31:12Z "/usr/local/include/boost/mpl/vector/aux_/at.hpp: At global scope: /usr/local/include/boost/mpl/vector/aux_/at.hpp:31: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/at.hpp:34: error: template argument 1 is invalid /usr/local/include/boost/mpl/vector/aux_/at.hpp:35: error: ‘template class std::vector’ used without template parameters /usr/local/include/boost/mpl/vector/aux_/at.hpp:39: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/at.hpp:41: error: type/value mismatch at argument 1 in template parameter list for ‘template, long int n_> struct boost::mpl::v_at_impl’ /usr/local/include/boost/mpl/vector/aux_/at.hpp:41: error: expected a constant of type ‘int’, got ‘vector’ /usr/local/include/boost/mpl/vector/aux_/at.hpp:41: error: template argument 1 is invalid /usr/local/include/boost/mpl/vector/aux_/at.hpp:42: error: expected ‘::’ before ‘{’ token /usr/local/include/boost/mpl/vector/aux_/at.hpp:42: error: expected class-name before ‘{’ token /usr/local/include/boost/mpl/vector/aux_/at.hpp:48: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/at.hpp:52: error: type/value mismatch at argument 1 in template parameter list for ‘template, long int n_> struct boost::mpl::v_at’ /usr/local/include/boost/mpl/vector/aux_/at.hpp:52: error: expected a constant of type ‘int’, got ‘vector’ In file included from /usr/local/include/boost/mpl/vector/vector0.hpp:18, from /usr/local/include/boost/mpl/vector/vector10.hpp:18, from /usr/local/include/boost/mpl/vector/vector20.hpp:18, from /usr/local/include/boost/mpl/vector.hpp:36, from HTTP_Request.cpp:13: /usr/local/include/boost/mpl/vector/aux_/front.hpp:31: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/front.hpp:32: error: type/value mismatch at argument 1 in template parameter list for ‘template, long int n_> struct boost::mpl::v_at’ /usr/local/include/boost/mpl/vector/aux_/front.hpp:32: error: expected a constant of type ‘int’, got ‘vector’ In file included from /usr/local/include/boost/mpl/vector/vector0.hpp:19, from /usr/local/include/boost/mpl/vector/vector10.hpp:18, from /usr/local/include/boost/mpl/vector/vector20.hpp:18, from /usr/local/include/boost/mpl/vector.hpp:36, from HTTP_Request.cpp:13: /usr/local/include/boost/mpl/vector/aux_/push_front.hpp:30: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/push_front.hpp:32: error: type/value mismatch at argument 2 in template parameter list for ‘template struct boost::mpl::v_item’ /usr/local/include/boost/mpl/vector/aux_/push_front.hpp:32: error: expected a type, got ‘vector’ In file included from /usr/local/include/boost/mpl/vector/vector0.hpp:20, from /usr/local/include/boost/mpl/vector/vector10.hpp:18, from /usr/local/include/boost/mpl/vector/vector20.hpp:18, from /usr/local/include/boost/mpl/vector.hpp:36, from HTTP_Request.cpp:13: /usr/local/include/boost/mpl/vector/aux_/pop_front.hpp:30: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/pop_front.hpp:32: error: type/value mismatch at argument 1 in template parameter list for ‘template struct boost::mpl::v_mask’ /usr/local/include/boost/mpl/vector/aux_/pop_front.hpp:32: error: expected a type, got ‘vector’ In file included from /usr/local/include/boost/mpl/vector/vector0.hpp:21, from /usr/local/include/boost/mpl/vector/vector10.hpp:18, from /usr/local/include/boost/mpl/vector/vector20.hpp:18, from /usr/local/include/boost/mpl/vector.hpp:36, from HTTP_Request.cpp:13: /usr/local/include/boost/mpl/vector/aux_/push_back.hpp:30: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/push_back.hpp:32: error: type/value mismatch at argument 2 in template parameter list for ‘template struct boost::mpl::v_item’ /usr/local/include/boost/mpl/vector/aux_/push_back.hpp:32: error: expected a type, got ‘vector’ In file included from /usr/local/include/boost/mpl/vector/vector0.hpp:22, from /usr/local/include/boost/mpl/vector/vector10.hpp:18, from /usr/local/include/boost/mpl/vector/vector20.hpp:18, from /usr/local/include/boost/mpl/vector.hpp:36, from HTTP_Request.cpp:13: /usr/local/include/boost/mpl/vector/aux_/pop_back.hpp:30: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/pop_back.hpp:32: error: type/value mismatch at argument 1 in template parameter list for ‘template struct boost::mpl::v_mask’ /usr/local/include/boost/mpl/vector/aux_/pop_back.hpp:32: error: expected a type, got ‘vector’ In file included from /usr/local/include/boost/mpl/vector/vector0.hpp:23, from /usr/local/include/boost/mpl/vector/vector10.hpp:18, from /usr/local/include/boost/mpl/vector/vector20.hpp:18, from /usr/local/include/boost/mpl/vector.hpp:36, from HTTP_Request.cpp:13: /usr/local/include/boost/mpl/vector/aux_/back.hpp:31: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/back.hpp:34: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/back.hpp:34: error: expected template-argument before ‘::’ token /usr/local/include/boost/mpl/vector/aux_/back.hpp:34: error: expected ‘>’ before ‘::’ token /usr/local/include/boost/mpl/vector/aux_/back.hpp:34: error: template argument 1 is invalid /usr/local/include/boost/mpl/vector/aux_/back.hpp:34: error: ‘::type’ has not been declared /usr/local/include/boost/mpl/vector/aux_/back.hpp:34: error: expected template-argument before ‘value’ /usr/local/include/boost/mpl/vector/aux_/back.hpp:34: error: expected ‘>’ before ‘value’ /usr/local/include/boost/mpl/vector/aux_/back.hpp:35: error: type/value mismatch at argument 1 in template parameter list for ‘template, long int n_> struct boost::mpl::v_at’ /usr/local/include/boost/mpl/vector/aux_/back.hpp:35: error: expected a constant of type ‘int’, got ‘vector’ /usr/local/include/boost/mpl/vector/aux_/back.hpp:35: error: template argument 2 is invalid /usr/local/include/boost/mpl/vector/aux_/back.hpp:36: error: expected ‘::’ before ‘{’ token /usr/local/include/boost/mpl/vector/aux_/back.hpp:36: error: expected class-name before ‘{’ token In file included from /usr/local/include/boost/mpl/vector/aux_/vector0.hpp:22, from /usr/local/include/boost/mpl/vector/aux_/clear.hpp:18, from /usr/local/include/boost/mpl/vector/vector0.hpp:24, from /usr/local/include/boost/mpl/vector/vector10.hpp:18, from /usr/local/include/boost/mpl/vector/vector20.hpp:18, from /usr/local/include/boost/mpl/vector.hpp:36, from HTTP_Request.cpp:13: /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:33: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:40: error: type/value mismatch at argument 1 in template parameter list for ‘template, long int n_> struct boost::mpl::v_at’ /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:40: error: expected a constant of type ‘int’, got ‘vector’ /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:42: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:62: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:65: error: type/value mismatch at argument 1 in template parameter list for ‘template, long int n_> struct boost::mpl::v_iter’ /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:65: error: expected a constant of type ‘int’, got ‘vector’ /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:65: error: template argument 1 is invalid /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:71: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:74: error: type/value mismatch at argument 1 in template parameter list for ‘template, long int n_> struct boost::mpl::v_iter’ /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:74: error: expected a constant of type ‘int’, got ‘vector’ /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:74: error: template argument 1 is invalid /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:80: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:84: error: type/value mismatch at argument 1 in template parameter list for ‘template, long int n_> struct boost::mpl::v_iter’ /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:84: error: expected a constant of type ‘int’, got ‘vector’ /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:84: error: template argument 1 is invalid /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:93: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:97: error: type/value mismatch at argument 1 in template parameter list for ‘template, long int n_> struct boost::mpl::v_iter’ /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:97: error: expected a constant of type ‘int’, got ‘vector’ /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:97: error: type/value mismatch at argument 1 in template parameter list for ‘template, long int n_> struct boost::mpl::v_iter’ /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:97: error: expected a constant of type ‘int’, got ‘vector’ /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:97: error: template argument 1 is invalid /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:97: error: template argument 2 is invalid In file included from /usr/local/include/boost/mpl/vector/vector0.hpp:24, from /usr/local/include/boost/mpl/vector/vector10.hpp:18, from /usr/local/include/boost/mpl/vector/vector20.hpp:18, from /usr/local/include/boost/mpl/vector.hpp:36, from HTTP_Request.cpp:13: /usr/local/include/boost/mpl/vector/aux_/clear.hpp:30: error: invalid use of template-name ‘std::vector’ without an argument list In file included from /usr/local/include/boost/mpl/vector/vector0.hpp:25, from /usr/local/include/boost/mpl/vector/vector10.hpp:18, from /usr/local/include/boost/mpl/vector/vector20.hpp:18, from /usr/local/include/boost/mpl/vector.hpp:36, from HTTP_Request.cpp:13: /usr/local/include/boost/mpl/vector/aux_/O1_size.hpp:31: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/O1_size.hpp:32: error: ‘template class std::vector’ used without template parameters /usr/local/include/boost/mpl/vector/aux_/O1_size.hpp:32: error: expected ‘{’ before ‘size’ /usr/local/include/boost/mpl/vector/aux_/O1_size.hpp:33: error: invalid type in declaration before ‘{’ token /usr/local/include/boost/mpl/vector/aux_/O1_size.hpp:34: error: ISO C++ forbids in-class initialization of non-const static member ‘size’ /usr/local/include/boost/mpl/vector/aux_/O1_size.hpp:34: error: template declaration of ‘int boost::mpl::size’ In file included from /usr/local/include/boost/mpl/vector/vector0.hpp:27, from /usr/local/include/boost/mpl/vector/vector10.hpp:18, from /usr/local/include/boost/mpl/vector/vector20.hpp:18, from /usr/local/include/boost/mpl/vector.hpp:36, from HTTP_Request.cpp:13: /usr/local/include/boost/mpl/vector/aux_/empty.hpp:30: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/empty.hpp:32: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/empty.hpp:32: error: expected template-argument before ‘::’ token /usr/local/include/boost/mpl/vector/aux_/empty.hpp:32: error: expected ‘>’ before ‘::’ token /usr/local/include/boost/mpl/vector/aux_/empty.hpp:34: error: wrong number of template arguments (1, should be 2) /usr/local/include/boost/type_traits/is_same.hpp:29: error: provided for ‘template struct boost::is_same’ /usr/local/include/boost/mpl/vector/aux_/empty.hpp:35: error: expected ‘::’ before ‘{’ token /usr/local/include/boost/mpl/vector/aux_/empty.hpp:35: error: expected class-name before ‘{’ token In file included from /usr/local/include/boost/mpl/vector/vector0.hpp:31, from /usr/local/include/boost/mpl/vector/vector10.hpp:18, from /usr/local/include/boost/mpl/vector/vector20.hpp:18, from /usr/local/include/boost/mpl/vector.hpp:36, from HTTP_Request.cpp:13: /usr/local/include/boost/mpl/vector/aux_/begin_end.hpp:30: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/begin_end.hpp:32: error: type/value mismatch at argument 1 in template parameter list for ‘template, long int n_> struct boost::mpl::v_iter’ /usr/local/include/boost/mpl/vector/aux_/begin_end.hpp:32: error: expected a constant of type ‘int’, got ‘vector’ /usr/local/include/boost/mpl/vector/aux_/begin_end.hpp:39: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/begin_end.hpp:41: error: type/value mismatch at argument 1 in template parameter list for ‘template, long int n_> struct boost::mpl::v_iter’ /usr/local/include/boost/mpl/vector/aux_/begin_end.hpp:41: error: expected a constant of type ‘int’, got ‘vector’ /usr/local/include/boost/mpl/vector/aux_/begin_end.hpp:41: error: template argument 2 is invalid " yogav2009@… 13056 boost\asio\impl\read_until.hpp asio Boost 1.64.0 To Be Determined Bugs chris_kohlhoff new 2017-06-06T02:31:23Z 2017-06-06T02:31:23Z " // Start a new asynchronous read operation to obtain more data. stream_.async_read_some(streambuf_.prepare(bytes_to_read), BOOST_ASIO_MOVE_CAST(read_until_delim_string_op)(*this)); return; default: //why the default label is here? streambuf_.commit(bytes_transferred); if (ec || bytes_transferred == 0) break; " xjzhang1979@… 13055 Couple doc typos graph Boost 1.64.0 To Be Determined Bugs Jeremiah Willcock new 2017-06-04T20:24:48Z 2017-08-30T09:29:54Z "http://www.boost.org/doc/libs/1_64_0/libs/graph/doc/VertexListGraph.html Under description of vertices(g), ""graphg"" should be ""graph g"". http://www.boost.org/doc/libs/1_64_0/libs/disjoint_sets/disjoint_sets.html First paragraph says ""member of of the set""." jonroy7@… 13054 Boost Process - rdbuf() in basic_ipstream/basic_opstream - implementation bug process Boost 1.64.0 To Be Determined Bugs Ion Gaztañaga new 2017-06-02T21:22:01Z 2017-09-18T11:32:18Z "boost/process/pipe.hpp : ///Get access to the underlying stream_buf basic_pipebuf* rdbuf() const {return _buf;}; my code: boost::process::opstream stream; stream.rdbuf(); compiler: /home/myname/boost/include/boost/process/pipe.hpp:341:57: error: cannot convert ‘const boost::process::basic_pipebuf’ to ‘boost::process::basic_pipebuf*’ in return basic_pipebuf* rdbuf() const {return _buf;}; ^ " radoslaw.chm@… 13053 fail to build boost.build engine build Boost 1.64.0 To Be Determined Bugs Vladimir Prus new 2017-06-01T15:41:25Z 2017-07-30T18:21:15Z "### ### Using 'vc14' toolset. ### E:\VS2013\BOOST\boost_1_64_0\tools\build\src\engine>if exist bootstrap rd /S /Q bootstrap E:\VS2013\BOOST\boost_1_64_0\tools\build\src\engine>md bootstrap E:\VS2013\BOOST\boost_1_64_0\tools\build\src\engine>cl /nologo /RTC1 /Zi /MTd /Fobootstrap/ /Fdbootstrap/ -DNT -DYYDEBUG -wd4996 kernel32.lib advapi32.lib user32.lib /Febootstrap\jam0 command.c compile.c constants.c debug.c execcmd.c execnt.c filent.c frames.c function.c glob.c hash.c hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c object.c option.c output.c parse.c pathnt.c pathsys.c regexp.c rules.c scan.c search.c subst.c timestamp.c variable.c modules.c strings.c filesys.c builtins.c md5.c class.c cwd.c w32_getreg.c native.c modules/set.c modules/path.c modules/regex.c modules/property-set.c modules/sequence.c modules/order.c E:\VS2013\BOOST\boost_1_64_0\tools\build\src\engine>exit /b 9009 " 854976175@… 13052 iostreams visibility=hidden for non-Windows platforms iostreams Boost 1.64.0 To Be Determined Bugs Jonathan Turkanis new 2017-06-01T12:07:49Z 2017-08-24T18:03:32Z "For the Mac, I am compiling the Boost libraries and my code using visibility=hidden. My code cannot find ""boost::iostreams::zlib::default_compression"". This is defined in iostreams/filter/zlib.hpp as Code: ''BOOST_IOSTREAMS_DECL extern const int default_compression;'' The only place that BOOST_IOSTREAMS_DECL is defined is iostreams/detail/config/dyn_link.hpp. That file sets the macro to either Windows-specific settings (''declspec(dllexport)''), or leaves it blank. So the Boost iostreams library will have the wrong visibility settings. This is unlike other places in the Boost code, where the right visibility settings are obtained by defining the library DECL macro as BOOST_SYMBOL_EXPORT. (Take a look at filesystem/config.hpp as an example of how it is done for most of the other libraries.) " Mark M 13049 nvcc CT Error: Boost 1.64.0 & CUDA 8.0 odeint Boost 1.64.0 To Be Determined Bugs karsten new 2017-05-30T11:58:21Z 2017-06-15T12:06:03Z "Compiling a host program which uses boost odeint integrate with nvcc from CUDA8.0 is not possible. The issue has been reported to Nvidia and will be fixed in CUDA 9. == Error == nvcc is crashing with an internal cudafe error {{{ /boost/numeric/odeint/stepper/controlled_runge_kutta.hpp(66): internal error: assertion failed at: ""/dvs/p4/build/sw/rel/gpu_drv/r361/r361_00/drivers/compiler/edg/EDG_4.10/src/types.c"", line 7537 1 catastrophic error detected in the compilation of ""/tmp/tmpxft_0000369f_00000000-9_main.cpp1.ii"". }}} == Example == {{{ #include // this include is needed to compile with cuda 7.5 // boost bug: https://svn.boost.org/trac/boost/ticket/12516 // see fix https://github.com/boostorg/serialization/commit/1d86261581230e2dc5d617a9b16287d326f3e229 #include #include #include typedef double float_64; namespace foo{ struct Probability { Probability() {} template void operator()(const T_State &, T_State &dpdtheta, const float_64 theta) const { const float_64 theta2 = theta*theta; dpdtheta[0] = theta2; } }; } int main() { namespace odeint = boost::numeric::odeint; typedef boost::array state_type; state_type integral_result = {0.0}; const float_64 lowerLimit = 0.0; const float_64 upperLimit = 0.1; const float_64 stepwidth = (2000 - 10) / float_64(1000.0); foo::Probability integrand; odeint::integrate(integrand, integral_result, lowerLimit, upperLimit, stepwidth); std::cout<