Buenas
Si he entendido bien ...
creo que el problema viene de lo siguiente:
Hay un script que verifica algo y se redirecciona cargando la página con ese frame ok? así resulta que en un paso en realidad se dan dos (cargar la página y redirigirla)
Supongo que al darle al botón de atrás, la que en ese momento queda atrás en el historial es la que lleva la redirección, así que en cuanto va a atrás se redirecciona de nuevo (habrías de darle a atrás dos veces)
Prueba una cosa ....
En esta parte del script...
<script language="javascript">
url=this.location.pathname
if(top==self) top.location="frames.htm?url=" + url
</script>
prueba a pedirselo así
<script language="javascript">
url=this.location.pathname
if(top==self) top.location
.replace("frames.htm?url=" + url)
</script>
a ver que tal