A man wielding a skewer and knife went on the rampage in the French city of Lyon on Saturday, leaving a 19-year-old man dead and eight others injured, including three critically.
A police source said the alleged perpetrator was an Afghan asylum-seeker, unknown previously to both the police and the intelligence services.
An eye-witness in Villeurbanne, a suburb of Lyon, described the attack as frenzied.
"There was a man at the 57 (bus stop) who started striking out with a knife in all directions," said a young girl whose top was stained with blood.
She eventually managed to get the woman on a bus, which closed its doors and drove away from the scene.
"There was blood everywhere," she added.
Of the eight people wounded in the attack, three were in a critical condition, said the prosecutor's office. Paramedics treated another 20 people at the scene for shock.
'Deadly madness'
The mayor of Lyon Gerard Collomb, a former interior minister, visited the site of the attack but in comments to journalists would not be drawn on what had provoked it. The man who carried out the attack had acted quite suddenly, he said.
The mayor of Villeurbanne, Jean-Paul Bret, paid tribute to people at the scene and security staff at the nearby metro station who overpowered the suspect as he tried to make his escape.
Police arrested the suspected attacker and were holding him in custody on suspicion of murder and attempted murder, the Lyon prosecutor's office told AFP.
The reasons for the attack were still not clear. The national anti-terrorism prosecutor's office had been informed but had not taken charge of the case at this stage.
Agence France-Presse