Since you are using gdb, set asome breakpoints before main returns. Try executing step by step. Notice how 0x397830390x39783039
came to be the return address and see where it came from. Getting familiar with your tool will help you tremendously.
In this case, you have a typo in your python script which is sending "x90" repeatedly instead of NOPs. So, it is three times as long as you expected. Thus, the intended NOP sled is still overrunning right through the return address.
Remember that 0x397830390x39783039
is "90x9" when unpacked in ascii.