The most likely reason that Vidalia could not start Tor is because Vidalia is looking for your Tor installation in the wrong directory. You can tell Vidalia where Tor is located by updating the Tor Executable option in the general configuration settings.
Another possible reason that Tor cannot start is because there is already another Tor process running. Check your list of running process and stop the previous Tor process, if you find one. Then, try running Tor again.
If that did not help, check your message log to see if Tor printed any information about errors it encountered while trying to start.
Vidalia manages Tor by communicating with it via Tor's control port.
The most common reason that Vidalia cannot connect to Tor is because Tor started, but encountered an error and exited immediately. You should check your message log to see if Tor reported any errors while it started.
If Tor is listening on a different port than Vidalia expects, Vidalia will be unable to connect to Tor. You rarely need to change this setting, but if there is another service running on your machine that conflicts with Tor's control port, you will need to specify a different port. You can change this setting in Vidalia's advanced configuration settings.
Vidalia interacts with the Tor software via Tor's "control port". The control port lets Vidalia receive status updates from Tor, request a new identity, configure Tor's settings, etc. Each time Vidalia starts Tor, Vidalia sets a random password for Tor's control port to prevent other applications from also connecting to the control port and potentially compromising your anonymity.
Usually this process of generating and setting a random control password happens in the background. There are three common situations, though, where Vidalia may prompt you for a password:
Vidalia crashed, but left Tor running with the last known random password. After you restart Vidalia, it generates a new random password, but Vidalia can't talk to Tor, because the random passwords are different.
If the dialog that prompts you for a control password has a Reset button, you can click the button and Vidalia will restart Tor with a new random control password.
If you do not see a Reset button, or if Vidalia is unable to restart Tor for you, you can still fix the problem manually. Simply go into your process or task manager, and terminate the Tor process. Then use Vidalia to restart Tor and all will work again.
You had previously set Tor to run as a service. When Tor is set to run as a service, it starts up when the system boots. If you configured Tor to start as a service through Vidalia, a random password was set and saved in Tor. When you reboot, Tor starts up and uses the random password it saved. You login and start up Vidalia. Vidalia attempts to talk to the already running Tor. Vidalia generates a random password, but it is different than the saved password in the Tor service.
You need to reconfigure Tor to not be a service. See the Tor wiki page on running Tor as a service for more information on how to remove the Tor service.
If Tor exits immediately after trying to start, you most likely have another Tor process already running. Check the message log to see if any of the last few messages in the list are highlighted in yellow and contain a message similar to the following:
connection_create_listener(): Could not bind to 127.0.0.1:9050: Address already in use. Is Tor already running?
If you find an error message like the one above, you will need to stop the other Tor process before starting a new one with Vidalia. On Windows, you would need to look for tor.exe in your Task Manager. On most other operating systems, the ps command can help you find the other Tor process.
If Tor had been running successfully for awhile (that is, longer than a few seconds), then you should check the message log for information about any errors Tor experienced before it exited. Such errors will be highlighted in either red or yellow.
If Vidalia cannot stop Tor, you should check your message log to see if Tor reported any errors while trying to exit.