Program: 90786
Project: 90786
Buggy source:
public void processPortletAction(PortletWindow portletWindow,HttpServletRequest servletRequest,HttpServletResponse servletResponse) throws PortletException, IOException, PortletContainerException {
  PortletContainerServices.prepare(uniqueContainerName);
  PortletInvoker invoker=null;
  if (log.isDebugEnabled()) {
    log.debug("String_Node_Str" + portletWindow.getId() + "String_Node_Str");
  }
  String location=null;
  InternalActionResponse _actionResponse=null;
  ActionRequest actionRequest=null;
  try {
    actionRequest=PortletObjectAccess.getActionRequest(portletWindow,servletRequest,servletResponse);
    ActionResponse actionResponse=PortletObjectAccess.getActionResponse(portletWindow,servletRequest,servletResponse);
    invoker=PortletInvokerAccess.getPortletInvoker(portletWindow.getPortletEntity().getPortletDefinition());
    _actionResponse=(InternalActionResponse)actionResponse;
    invoker.action(actionRequest,actionResponse);
    location=_actionResponse.getRedirectLocation();
  }
 catch (  PortletException e) {
    throw e;
  }
catch (  IOException e) {
    throw e;
  }
catch (  RuntimeException e) {
    throw e;
  }
 finally {
    try {
      if (location == null && _actionResponse != null) {
        DynamicInformationProvider provider=InformationProviderAccess.getDynamicProvider(servletRequest);
        if (_actionResponse.getChangedPortletMode() != null) {
          InformationProviderAccess.getDynamicProvider(servletRequest).getPortletActionProvider(portletWindow).changePortletMode(_actionResponse.getChangedPortletMode());
        }
        if (_actionResponse.getChangedWindowState() != null) {
          InformationProviderAccess.getDynamicProvider(servletRequest).getPortletActionProvider(portletWindow).changePortletWindowState(_actionResponse.getChangedWindowState());
        }
        Map renderParameter=_actionResponse.getRenderParameters();
        PortletURLProvider redirectURL=provider.getPortletURLProvider(portletWindow);
        if (provider.getPortletMode(portletWindow) != null) {
          redirectURL.setPortletMode(provider.getPortletMode(portletWindow));
        }
        if (provider.getWindowState(portletWindow) != null) {
          redirectURL.setWindowState(provider.getWindowState(portletWindow));
        }
        redirectURL.clearParameters();
        redirectURL.setParameters(renderParameter);
        location=servletResponse.encodeRedirectURL(redirectURL.toString());
      }
      javax.servlet.http.HttpServletResponse redirectResponse=servletResponse;
      while (redirectResponse instanceof javax.servlet.http.HttpServletResponseWrapper) {
        redirectResponse=(javax.servlet.http.HttpServletResponse)((javax.servlet.http.HttpServletResponseWrapper)redirectResponse).getResponse();
      }
      redirectResponse.sendRedirect(location);
    }
  finally {
      PortletInvokerAccess.releasePortletInvoker(invoker);
      PortletContainerServices.release();
    }
  }
}

Fixed version (ground truth):
public void processPortletAction(PortletWindow portletWindow,HttpServletRequest servletRequest,HttpServletResponse servletResponse) throws PortletException, IOException, PortletContainerException {
  PortletContainerServices.prepare(uniqueContainerName);
  PortletInvoker invoker=null;
  if (log.isDebugEnabled()) {
    log.debug("String_Node_Str" + portletWindow.getId() + "String_Node_Str");
  }
  String location=null;
  InternalActionResponse _actionResponse=null;
  ActionRequest actionRequest=null;
  try {
    actionRequest=PortletObjectAccess.getActionRequest(portletWindow,servletRequest,servletResponse);
    ActionResponse actionResponse=PortletObjectAccess.getActionResponse(portletWindow,servletRequest,servletResponse);
    invoker=PortletInvokerAccess.getPortletInvoker(portletWindow.getPortletEntity().getPortletDefinition());
    _actionResponse=(InternalActionResponse)actionResponse;
    invoker.action(actionRequest,actionResponse);
    location=_actionResponse.getRedirectLocation();
  }
 catch (  PortletException e) {
    throw e;
  }
catch (  IOException e) {
    throw e;
  }
catch (  RuntimeException e) {
    throw e;
  }
 finally {
    try {
      redirect(location,portletWindow,servletRequest,servletResponse,_actionResponse);
    }
  finally {
      PortletInvokerAccess.releasePortletInvoker(invoker);
      PortletContainerServices.release();
    }
  }
}