The website fails to load. Fine if logged in and there is no captcha applicable.

This does not happen all the time, but reasonably regularly.

The process that worked a couple of times to get it working again is

"Make work again by 'clear captcha placement cache'. Then clear all caches.
Then load a page with captcha on it with a logged in user."

TypeError: Argument 2 passed to Drupal\captcha\Service\CaptchaService::insertCaptchaElement() must be of the type array, null given, called in /data/it/www/web/modules/contrib/captcha/captcha.module on line 223 in Drupal\captcha\Service\CaptchaService->insertCaptchaElement() (line 66 of /data/it/www/web/modules/contrib/captcha/src/Service/CaptchaService.php) #0 /data/it/www/web/modules/contrib/captcha/captcha.module(223): Drupal\captcha\Service\CaptchaService->insertCaptchaElement(Array, NULL, Array) #1 /data/it/www/web/core/lib/Drupal/Core/Extension/ModuleHandler.php(539): captcha_form_alter(Array, Object(Drupal\Core\Form\FormState), 'webform_submiss...') #2 /data/it/www/web/core/lib/Drupal/Core/Form/FormBuilder.php(835): Drupal\Core\Extension\ModuleHandler->alter('form', Array, Object(Drupal\Core\Form\FormState), 'webform_submiss...') #3 /data/it/www/web/core/lib/Drupal/Core/Form/FormBuilder.php(277): Drupal\Core\Form\FormBuilder->prepareForm('webform_submiss...', Array, Object(Drupal\Core\Form\FormState)) #4 /data/it/www/web/core/lib/Drupal/Core/Entity/EntityFormBuilder.php(61): Drupal\Core\Form\FormBuilder->buildForm(Object(Drupal\webform\WebformSubmissionForm), Object(Drupal\Core\Form\FormState)) #5 /data/it/www/web/modules/contrib/webform/src/Entity/Webform.php(1121): Drupal\Core\Entity\EntityFormBuilder->getForm(Object(Drupal\webform\Entity\WebformSubmission), 'add') #6 /data/it/www/web/modules/contrib/webform/src/Element/Webform.php(78): Drupal\webform\Entity\Webform->getSubmissionForm(Array) #7 [internal function]: Drupal\webform\Element\Webform::preRenderWebformElement(Array) #8 /data/it/www/web/core/lib/Drupal/Core/Render/Renderer.php(378): call_user_func(Array, Array) #9 /data/it/www/web/core/lib/Drupal/Core/Render/Renderer.php(195): Drupal\Core\Render\Renderer->doRender(Array, false) #10 /data/it/www/web/core/lib/Drupal/Core/Template/TwigExtension.php(501): Drupal\Core\Render\Renderer->render(Array) #11 /data/it/www/web/sites/default/files/php/twig/5de881f15ed2a_field.html.twig_l79L5uMSAMG4_vVqoKKsicGQx/wcMzWYSwT2nTwRUqGiAYW6kE_SmPZUWh7HNziQgm1VU.php(100): Drupal\Core\Template\TwigExtension->escapeFilter(Object(Drupal\Core\Template\TwigEnvironment), Array, 'html', NULL, true) #12 /data/it/www/vendor/twig/twig/src/Template.php(455): __TwigTemplate_b821c9e552e7d2f1f12441b28e345bbf68782dd3b149c0c7ac9c22e86ac39d2f->doDisplay(Array, Array) #13 /data/it/www/vendor/twig/twig/src/Template.php(422): Twig\Template->displayWithErrorHandling(Array, Array) #14 /data/it/www/vendor/twig/twig/src/Template.php(434): Twig\Template->display(Array) #15 /data/it/www/web/core/themes/engines/twig/twig.engine(64): Twig\Template->render(Array) #16 /data/it/www/web/core/lib/Drupal/Core/Theme/ThemeManager.php(384): twig_render_template('themes/custom/d...', Array) #17 /data/it/www/web/core/lib/Drupal/Core/Render/Renderer.php(437): Drupal\Core\Theme\ThemeManager->render('field', Array) #18 /data/it/www/web/core/lib/Drupal/Core/Render/Renderer.php(450): Drupal\Core\Render\Renderer->doRender(Array) #19 /data/it/www/web/core/lib/Drupal/Core/Render/Renderer.php(195): Drupal\Core\Render\Renderer->doRender(Array, false) #20 /data/it/www/web/core/lib/Drupal/Core/Template/TwigExtension.php(501): Drupal\Core\Render\Renderer->render(Array) #21 /data/it/www/web/sites/default/files/php/twig/5de881f15ed2a_block--content.html.twig_NiU73KscN7qLEwnnmCthvBaTm/cqugq5eZ0WQ3vv2MwhDT7JV6893ZI8RlOOyFSMicTRw.php(94): Drupal\Core\Template\TwigExtension->escapeFilter(Object(Drupal\Core\Template\TwigEnvironment), Array, 'html', NULL, true) #22 /data/it/www/vendor/twig/twig/src/Template.php(216): __TwigTemplate_ee663d9d34a7fe284167bcfbc7a89c167b3a0399eda21630ebe69826e2afb026->block_content(Array, Array) #23 /data/it/www/web/sites/default/files/php/twig/5de881f15ed2a_block--content.html.twig_NiU73KscN7qLEwnnmCthvBaTm/cqugq5eZ0WQ3vv2MwhDT7JV6893ZI8RlOOyFSMicTRw.php(82): Twig\Template->displayBlock('content', Array, Array) #24 /data/it/www/vendor/twig/twig/src/Template.php(455): __TwigTemplate_ee663d9d34a7fe284167bcfbc7a89c167b3a0399eda21630ebe69826e2afb026->doDisplay(Array, Array) #25 /data/it/www/vendor/twig/twig/src/Template.php(422): Twig\Template->displayWithErrorHandling(Array, Array) #26 /data/it/www/vendor/twig/twig/src/Template.php(434): Twig\Template->display(Array) #27 /data/it/www/web/core/themes/engines/twig/twig.engine(64): Twig\Template->render(Array) #28 /data/it/www/web/core/lib/Drupal/Core/Theme/ThemeManager.php(384): twig_render_template('themes/custom/d...', Array) #29 /data/it/www/web/core/lib/Drupal/Core/Render/Renderer.php(437): Drupal\Core\Theme\ThemeManager->render('block', Array) #30 /data/it/www/web/core/lib/Drupal/Core/Render/Renderer.php(450): Drupal\Core\Render\Renderer->doRender(Array) #31 /data/it/www/web/core/lib/Drupal/Core/Render/Renderer.php(195): Drupal\Core\Render\Renderer->doRender(Array, false) #32 /data/it/www/web/core/lib/Drupal/Core/Template/TwigExtension.php(501): Drupal\Core\Render\Renderer->render(Array) #33 /data/it/www/web/sites/default/files/php/twig/5de881f15ed2a_page.html.twig_4Fog-0XFd1h9qnBqARi_zr96j/7kjhLWOozfLyYNtwLOtCv0K_JRsZ4A1QvefIQaUaXPo.php(200): Drupal\Core\Template\TwigExtension->escapeFilter(Object(Drupal\Core\Template\TwigEnvironment), Array, 'html', NULL, true) #34 /data/it/www/vendor/twig/twig/src/Template.php(455): __TwigTemplate_fc231c99fcae643e7db2eab2123ca24b4475d2c0343f3bb9e9a1642c2208ffd2->doDisplay(Array, Array) #35 /data/it/www/vendor/twig/twig/src/Template.php(422): Twig\Template->displayWithErrorHandling(Array, Array) #36 /data/it/www/vendor/twig/twig/src/Template.php(434): Twig\Template->display(Array) #37 /data/it/www/web/core/themes/engines/twig/twig.engine(64): Twig\Template->render(Array) #38 /data/it/www/web/core/lib/Drupal/Core/Theme/ThemeManager.php(384): twig_render_template('themes/custom/d...', Array) #39 /data/it/www/web/core/lib/Drupal/Core/Render/Renderer.php(437): Drupal\Core\Theme\ThemeManager->render('page', Array) #40 /data/it/www/web/core/lib/Drupal/Core/Render/Renderer.php(195): Drupal\Core\Render\Renderer->doRender(Array, false) #41 /data/it/www/web/core/lib/Drupal/Core/Template/TwigExtension.php(501): Drupal\Core\Render\Renderer->render(Array) #42 /data/it/www/web/sites/default/files/php/twig/5de881f15ed2a_html.html.twig_0rn01qwLyrXtEy66afnKP-nSH/hhSSwu_CtcEkP1sToeNySqXtUKrcjZekPKlsCrNFPrM.php(133): Drupal\Core\Template\TwigExtension->escapeFilter(Object(Drupal\Core\Template\TwigEnvironment), Array, 'html', NULL, true) #43 /data/it/www/vendor/twig/twig/src/Template.php(455): __TwigTemplate_2904b311f67bc4b844b557459948baee5f3580d8014238429a11acbad59da2de->doDisplay(Array, Array) #44 /data/it/www/vendor/twig/twig/src/Template.php(422): Twig\Template->displayWithErrorHandling(Array, Array) #45 /data/it/www/vendor/twig/twig/src/Template.php(434): Twig\Template->display(Array) #46 /data/it/www/web/core/themes/engines/twig/twig.engine(64): Twig\Template->render(Array) #47 /data/it/www/web/core/lib/Drupal/Core/Theme/ThemeManager.php(384): twig_render_template('themes/custom/d...', Array) #48 /data/it/www/web/core/lib/Drupal/Core/Render/Renderer.php(437): Drupal\Core\Theme\ThemeManager->render('html', Array) #49 /data/it/www/web/core/lib/Drupal/Core/Render/Renderer.php(195): Drupal\Core\Render\Renderer->doRender(Array, false) #50 /data/it/www/web/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php(147): Drupal\Core\Render\Renderer->render(Array) #51 /data/it/www/web/core/lib/Drupal/Core/Render/Renderer.php(582): Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() #52 /data/it/www/web/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php(148): Drupal\Core\Render\Renderer->executeInRenderContext(Object(Drupal\Core\Render\RenderContext), Object(Closure)) #53 /data/it/www/web/core/lib/Drupal/Core/EventSubscriber/MainContentViewSubscriber.php(90): Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object(Symfony\Component\HttpFoundation\Request), Object(Drupal\Core\Routing\CurrentRouteMatch)) #54 [internal function]: Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object(Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent), 'kernel.view', Object(Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher)) #55 /data/it/www/web/core/lib/Drupal/Component/EventDispatcher/ContainerAwareEventDispatcher.php(111): call_user_func(Array, Object(Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent), 'kernel.view', Object(Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher)) #56 /data/it/www/vendor/symfony/http-kernel/HttpKernel.php(156): Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object(Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent)) #57 /data/it/www/vendor/symfony/http-kernel/HttpKernel.php(68): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1) #58 /data/it/www/web/core/lib/Drupal/Core/StackMiddleware/Session.php(57): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #59 /data/it/www/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(47): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #60 /data/it/www/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #61 /data/it/www/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\page_cache\StackMiddleware\PageCache->pass(Object(Symfony\Component\HttpFoundation\Request), 1, true) #62 /data/it/www/vendor/asm89/stack-cors/src/Asm89/Stack/Cors.php(49): Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #63 /data/it/www/web/core/modules/ban/src/BanMiddleware.php(50): Asm89\Stack\Cors->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #64 /data/it/www/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(47): Drupal\ban\BanMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #65 /data/it/www/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(52): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #66 /data/it/www/vendor/stack/builder/src/Stack/StackedHttpKernel.php(23): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #67 /data/it/www/web/core/lib/Drupal/Core/DrupalKernel.php(693): Stack\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #68 /data/it/www/web/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request)) #69 {main}.

Support from Acquia helps fund testing for Drupal Acquia logo

Comments

interlated created an issue. See original summary.

interlated’s picture

There is 2 captcha placement instances in captcha.module. The first instance does not check that a valid cache is returned. The second invocation does.

Line 221

      // Get placement in form and insert in form.
      $captcha_placement = _captcha_get_captcha_placement($form_id, $form);
      $captchaService->insertCaptchaElement($form, $captcha_placement, $captcha_element);

And line 277

        // Get placement in form and insert in form.
    if ($captcha_placement = _captcha_get_captcha_placement($form_id, $form)) {
      $captchaService->insertCaptchaElement($form, $captcha_placement, $captcha_element);
    };
interlated’s picture

interlated’s picture

zipymonkey’s picture

Looks like this duplicates https://www.drupal.org/node/3075256 as well.

Liam Morland’s picture

Status: Active » Needs review
FileSize
753 bytes

Re-roll.

I am getting these errors as well.

Liam Morland’s picture

Title: The website encountered an unexpected error » Argument 2 passed to CaptchaService::insertCaptchaElement() must be of the type array
anpolimus’s picture

Status: Needs review » Reviewed & tested by the community

We've expected this issue at our project. The last patch fixes it.
Code changes look straightforward. Tests are green.
I'm not a maintainer for this module, but it looks like this issue is a great candidate for RTBC

japerry’s picture

Status: Reviewed & tested by the community » Fixed

  • japerry committed 6cc57ec on 8.x-1.x authored by Liam Morland
    Issue #3099456 by interlated, Liam Morland: Argument 2 passed to...

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.