Found bug in Magento 2.2.6 (maybe can be reproduced in early versions).
Magento uses the same
Magento\Cms\Ui\Component\DataProvider
class for both components cms_block_listing.xml, cms_page_listing.xml
When admin user has access in cms_block & NOT cms_page throws exception
{"0":"The configuration parameter \"componentType\" is a required for \"cms_page_columns\" component.","1":"#0 \/home\/feinkost-boehm\/current\/vendor\/magento\/framework\/View\/Element\/UiComponentFactory.php(404): Magento\\Framework\\View\\Element\\UiComponentFactory->mergeMetadataItem(Array, Array, false)\n#1 \/home\/feinkost-boehm\/current\/vendor\/magento\/framework\/View\/Element\/UiComponentFactory.php(313): Magento\\Framework\\View\\Element\\UiComponentFactory->mergeMetadataItem(Array, Array, false)\n#2 \/home\/feinkost-boehm\/current\/vendor\/magento\/framework\/View\/Element\/UiComponentFactory.php(216): Magento\\Framework\\View\\Element\\UiComponentFactory->mergeMetadata('cms_block_listi...', Array, false)\n#3 \/home\/feinkost-boehm\/current\/vendor\/magento\/framework\/View\/Layout\/Generator\/UiComponent.php(135): Magento\\Framework\\View\\Element\\UiComponentFactory->create('cms_block_listi...', NULL, Array)\n#4 \/home\/feinkost-boehm\/current\/vendor\/magento\/framework\/View\/Layout\/Generator\/UiComponent.php(97): Magento\\Framework\\View\\Layout\\Generator\\UiComponent->generateComponent(Object(Magento\\Framework\\View\\Layout\\Data\\Structure), 'cms_block_listi...', Array, Object(Magento\\Framework\\View\\Layout\\Interceptor))\n#5 \/home\/feinkost-boehm\/current\/vendor\/magento\/framework\/View\/Layout\/GeneratorPool.php(80): Magento\\Framework\\View\\Layout\\Generator\\UiComponent->process(Object(Magento\\Framework\\View\\Layout\\Reader\\Context), Object(Magento\\Framework\\View\\Layout\\Generator\\Context))\n#6 \/home\/feinkost-boehm\/current\/vendor\/magento\/framework\/View\/Layout.php(343): Magento\\Framework\\View\\Layout\\GeneratorPool->process(Object(Magento\\Framework\\View\\Layout\\Reader\\Context), Object(Magento\\Framework\\View\\Layout\\Generator\\Context))\n#7 \/home\/feinkost-boehm\/current\/generated\/code\/Magento\/Framework\/View\/Layout\/Interceptor.php(89): Magento\\Framework\\View\\Layout->generateElements()\n#8 \/home\/feinkost-boehm\/current\/vendor\/magento\/framework\/View\/Layout\/Builder.php(129): Magento\\Framework\\View\\Layout\\Interceptor->generateElements()\n#9 \/home\/feinkost-boehm\/current\/vendor\/magento\/framework\/View\/Page\/Builder.php(55): Magento\\Framework\\View\\Layout\\Builder->generateLayoutBlocks()\n#10 \/home\/feinkost-boehm\/current\/vendor\/magento\/framework\/View\/Layout\/Builder.php(65): Magento\\Framework\\View\\Page\\Builder->generateLayoutBlocks()\n#11 \/home\/feinkost-boehm\/current\/vendor\/magento\/framework\/View\/Layout.php(253): Magento\\Framework\\View\\Layout\\Builder->build()\n#12 \/home\/feinkost-boehm\/current\/vendor\/magento\/framework\/View\/Layout.php(875): Magento\\Framework\\View\\Layout->build()\n#13 \/home\/feinkost-boehm\/current\/generated\/code\/Magento\/Framework\/View\/Layout\/Interceptor.php(414): Magento\\Framework\\View\\Layout->getBlock('menu')\n#14 \/home\/feinkost-boehm\/current\/vendor\/magento\/module-backend\/Model\/View\/Result\/Page.php(26): Magento\\Framework\\View\\Layout\\Interceptor->getBlock('menu')\n#15 \/home\/feinkost-boehm\/current\/vendor\/magento\/module-cms\/Controller\/Adminhtml\/Block.php(42): Magento\\Backend\\Model\\View\\Result\\Page->setActiveMenu('Magento_Cms::cm...')\n#16 \/home\/feinkost-boehm\/current\/vendor\/magento\/module-cms\/Controller\/Adminhtml\/Block\/Index.php(39): Magento\\Cms\\Controller\\Adminhtml\\Block->initPage(Object(Magento\\Backend\\Model\\View\\Result\\Page\\Interceptor))\n#17 \/home\/feinkost-boehm\/current\/vendor\/magento\/framework\/App\/Action\/Action.php(107): Magento\\Cms\\Controller\\Adminhtml\\Block\\Index->execute()\n#18 \/home\/feinkost-boehm\/current\/vendor\/magento\/module-backend\/App\/AbstractAction.php(235): Magento\\Framework\\App\\Action\\Action->dispatch(Object(Magento\\Framework\\App\\Request\\Http))\n#19 \/home\/feinkost-boehm\/current\/vendor\/magento\/framework\/Interception\/Interceptor.php(58): Magento\\Backend\\App\\AbstractAction->dispatch(Object(Magento\\Framework\\App\\Request\\Http))\n#20 \/home\/feinkost-boehm\/current\/vendor\/magento\/framework\/Interception\/Interceptor.php(138): Magento\\Cms\\Controller\\Adminhtml\\Block\\Index\\Interceptor->___callParent('dispatch', Array)\n#21 \/home\/feinkost-boehm\/current\/vendor\/magento\/module-backend\/App\/Action\/Plugin\/Authentication.php(143): Magento\\Cms\\Controller\\Adminhtml\\Block\\Index\\Interceptor->Magento\\Framework\\Interception\\{closure}(Object(Magento\\Framework\\App\\Request\\Http))\n#22 \/home\/feinkost-boehm\/current\/vendor\/magento\/framework\/Interception\/Interceptor.php(135): Magento\\Backend\\App\\Action\\Plugin\\Authentication->aroundDispatch(Object(Magento\\Cms\\Controller\\Adminhtml\\Block\\Index\\Interceptor), Object(Closure), Object(Magento\\Framework\\App\\Request\\Http))\n#23 \/home\/feinkost-boehm\/current\/vendor\/magento\/framework\/Interception\/Interceptor.php(153): Magento\\Cms\\Controller\\Adminhtml\\Block\\Index\\Interceptor->Magento\\Framework\\Interception\\{closure}(Object(Magento\\Framework\\App\\Request\\Http))\n#24 \/home\/feinkost-boehm\/current\/generated\/code\/Magento\/Cms\/Controller\/Adminhtml\/Block\/Index\/Interceptor.php(26): Magento\\Cms\\Controller\\Adminhtml\\Block\\Index\\Interceptor->___callPlugins('dispatch', Array, NULL)\n#25 \/home\/feinkost-boehm\/current\/vendor\/magento\/framework\/App\/FrontController.php(55): Magento\\Cms\\Controller\\Adminhtml\\Block\\Index\\Interceptor->dispatch(Object(Magento\\Framework\\App\\Request\\Http))\n#26 \/home\/feinkost-boehm\/current\/vendor\/magento\/framework\/Interception\/Interceptor.php(58): Magento\\Framework\\App\\FrontController->dispatch(Object(Magento\\Framework\\App\\Request\\Http))\n#27 \/home\/feinkost-boehm\/current\/vendor\/magento\/framework\/Interception\/Interceptor.php(138): Magento\\Framework\\App\\FrontController\\Interceptor->___callParent('dispatch', Array)\n#28 \/home\/feinkost-boehm\/current\/vendor\/magento\/framework\/Interception\/Interceptor.php(153): Magento\\Framework\\App\\FrontController\\Interceptor->Magento\\Framework\\Interception\\{closure}(Object(Magento\\Framework\\App\\Request\\Http))\n#29 \/home\/feinkost-boehm\/current\/generated\/code\/Magento\/Framework\/App\/FrontController\/Interceptor.php(26): Magento\\Framework\\App\\FrontController\\Interceptor->___callPlugins('dispatch', Array, Array)\n#30 \/home\/feinkost-boehm\/current\/vendor\/magento\/framework\/App\/Http.php(135): Magento\\Framework\\App\\FrontController\\Interceptor->dispatch(Object(Magento\\Framework\\App\\Request\\Http))\n#31 \/home\/feinkost-boehm\/current\/generated\/code\/Magento\/Framework\/App\/Http\/Interceptor.php(24): Magento\\Framework\\App\\Http->launch()\n#32 \/home\/feinkost-boehm\/current\/vendor\/magento\/framework\/App\/Bootstrap.php(257): Magento\\Framework\\App\\Http\\Interceptor->launch()\n#33 \/home\/feinkost-boehm\/current\/index.php(50): Magento\\Framework\\App\\Bootstrap->run(Object(Magento\\Framework\\App\\Http\\Interceptor))\n#34 {main}","url":"\/admin\/cms\/block\/index\/key\/43cfc8d3b7f31751726a2be3b225a139d822b555d33a1435f5f1ad10a6eb883f\/","script_name":"\/index.php"}
This related to method
Magento\Cms\Ui\Component\DataProvider::prepareMetadata()
where
cms_page_columns
non-exist element on cms blocks listing