fix grave bug introduced by me: the low-level matrix-vector product functions can't be fed strided vectors, only strided matrices.
diff --git a/Eigen/src/Core/Product.h b/Eigen/src/Core/Product.h
index 4e7ffa5..3e6fbf0 100644
--- a/Eigen/src/Core/Product.h
+++ b/Eigen/src/Core/Product.h
@@ -297,7 +297,8 @@
   static void run(const ProductType& prod, Dest& dest, typename ProductType::Scalar alpha)
   {
     Transpose<Dest> destT(dest);
-    ei_gemv_selector<OnTheRight,!StorageOrder,BlasCompatible>
+    enum { OtherStorageOrder = StorageOrder == RowMajor ? ColMajor : RowMajor };
+    ei_gemv_selector<OnTheRight,OtherStorageOrder,BlasCompatible>
       ::run(GeneralProduct<Transpose<typename ProductType::_RhsNested>,Transpose<typename ProductType::_LhsNested>, GemvProduct>
         (prod.rhs().transpose(), prod.lhs().transpose()), destT, alpha);
   }
diff --git a/Eigen/src/Core/util/BlasUtil.h b/Eigen/src/Core/util/BlasUtil.h
index 762de02..43c4967 100644
--- a/Eigen/src/Core/util/BlasUtil.h
+++ b/Eigen/src/Core/util/BlasUtil.h
@@ -159,7 +159,10 @@
     IsTransposed = false,
     NeedToConjugate = false,
     ActualAccess = (    (int(XprType::Flags)&DirectAccessBit)
-                     && (bool(XprType::IsVectorAtCompileTime) || int(ei_inner_stride_at_compile_time<XprType>::ret) == 1)
+                     && (  /* Uncomment this when the low-level matrix-vector product functions support strided vectors
+                           bool(XprType::IsVectorAtCompileTime)
+                         ||  */
+                           int(ei_inner_stride_at_compile_time<XprType>::ret) == 1)
                    ) ?  HasDirectAccess : NoDirectAccess
   };
   typedef typename ei_meta_if<int(ActualAccess)==HasDirectAccess,