We have configured GRE tunnels between few routers. Few tunnels, go down very frequently due to recursive routing. As per the link below, we gave a static route with /32 mask via the next hop interface. This resolves the recurssive routing issue. Though the tunnel status is up and stable, will not be able to ping the device.
If we change the next hop to other end tunnel ip, recurssive routing occurs and and when the tunnel is up, will be able to ping the device.
Adding the /32 route is a good first step. Can you ping from the tunnel source to the tunnel destination? If you can't ping, what does a traceroute show? Make sure you're not seeing any loops from redistributing the host static route into your routing protocol. After adding the /32 static route, does the next hop device have the correct route to the tunnel destination? Can you paste in a scrubbed configuration of the end points?