The masked gunman worked his way across the mall, terrifying holiday shoppers who had no clue where he'd fire next.
The huge crowd at Clackamas Town Center fell silent except for the blasts of his rifle and the ensuing screams. Even the mall's Santa dropped to the ground.
"I thought I was going to die," mall employee David Moran said. "The gunshots were so loud, it was very scary. ... Kids were crying. Parents were crying, too."
Kira Rowland was holding her 6-month-old baby in Macy's when the shots rang out.
"I threw my baby into the stroller and just started running because everybody was screaming and everybody just started to run," she said.
Witnesses say at least 20 shots were fired inside the mall, about 11 miles southeast of Portland, Oregon.
By the end of the rampage, three people lay dead, including the gunman from an apparent self-inflicted gunshot wound. One young woman remains hospitalized "fighting for her life," Clackamas County Sheriff Craig Roberts said Tuesday night.
Authorities have not identified the victims, pending notification of relatives. Investigators have tentatively identified the shooter, but are not releasing his name until they get confirmation.
The gunman wore a hockey mask and jogged through Macy's wielding a rifle, a woman told CNN affiliate KOIN.
As some panicked customers bolted for the exits, others ducked under store counters or hid behind racks of clothing.
Erin Quackenbush-Baker was in a more vulnerable position -- in the middle of the mall, at a kiosk with her grandmother and three young children.
"My 5-year-old was covering her ears and crying. I was frantic to find a place to run, and I looked back (at) my son in my stroller and glass is falling over us," she said. "The shots were getting closer, and it sounded like he was getting closer."
"I felt like sitting ducks, where we were."
During a brief halt in the gunfire, a man in a black fleece helped rush the family into a nearby Sephora store. That's where Quackenbush-Baker and her children hid for an hour, "waiting to see if we were going to be shot or not."
As word spread that the shooter was moving from store to store, customers at Sears burst into tears, Christina Fisher told KOIN.
"We were told to stand in a group by the top of the escalators and stay away from the windows out of the aisle. ... We stood there for probably a good 20 minutes," she said. "All of the sudden, somebody came through with a radio, yelling, 'Get down!'"
As the melee unfolded, some customers watched television news reports about the shooting from inside the Sears entertainment center, Tylor Pedersen told affiliate KGW.
Antonio Charro spotted a wounded woman near a cell phone store and tried to help, but to no avail.
"She had apparently been shot in the chest, and I couldn't get her turned over to help her," said Antonio Charro, who had been shopping at the mall with his daughters. "There was no one around. She wasn't breathing."
No law enforcement officers fired any shots when they arrived, Clackamas County sheriff's Sgt. Adam Phillips said.
The 1.4-million-square-foot mall will remain closed Wednesday as investigators sift for clues about the gunman's attack. But the motive might never be known.
Rowland said she's grateful she got distracted while shopping and didn't venture further into the mall.
"I think if I hadn't stopped to smell that perfume, that maybe me and my baby wouldn't be here today."
CNN's Cristy Lenz, Chandler Friedman, Michael Martinez, Tom Watkins and AnneClaire Stapleton contributed to this report.