Bug introduced in 10.1.0 or earlier and fixed in 12.1.0
While looking at the question How to evaluate the "Domain" of an InterpolationObject? I noted that using PropertyList in a way, that seems to be in accordance with the documentation, will actually crash the kernel for some objects. What is going on?
Let's simply use the documentation's simple example to produce an InterpolatingFunction object:
points = {{0, 0}, {1, 1}, {2, 3}, {3, 4}, {4, 3}, {5, 0}};
ifun = Interpolation[points]; (* creates InterpolatingFunction object *)
PropertyList[ ifun ]
{Coordinates,DerivativeOrder,Domain,ElementMesh,Evaluate,GetPolynomial,Grid,InterpolationMethod,InterpolationOrder,MethodInformation,Methods,OutputDimensions,Periodicity,PlottableQ,Properties,QuantityUnits,Unpack,ValuesOnGrid}
But if we had instead executed one the following expressions we would have crashed the kernel:
DO NOT TRY THE FOLLOWING CODE WITHOUT HAVING SAVED YOUR WORK!
THE FOLLOWING CODE WILL LIKELY CRASH THE KERNEL!
(* PropertyList[ { ifun, 1 } ] *)
(* PropertyList[ { ifun, All } ] *)
Are some objects created differently than others?