91³Ô¹ÏÍø

Watch CBS News

Frisco ISD student fatally stabs another during fight at track meet, police say

An altercation at a Frisco ISD track meet on Wednesday resulted in a fatal stabbing. 

According to the Frisco Police Department, the incident happened around 10 a.m. at a track meet in the 6900 block of Stadium Lane, at Kuykendall Stadium. 

Frisco PD said the altercation was between two students and resulted in one stabbing the other. The suspect, 17-year-old Karmelo Anthony, is in police custody and has been charged with murder. His bond has yet to be set.

austin-metcalf.png
Austin Metcalf Austin Metcalf's X account

The victim, 17-year-old Austin Metcalf, was taken to a local hospital in an unknown condition. A few hours later, police said the victim died from their injuries.

Pastor Zach Martin, a campus pastor for Hope Fellowship, remembered the teen.

"I think there's not a lot more we can say," Martin said. "He's somebody who's connected to us. As a church family, we want to be able to support and love them as best we can."

Meanwhile, Frisco ISD said the track meet was suspended and the stadium was immediately secured. Students were then released and sent back to their home campus via bus.

CBS News Texas Chopper was at the stadium Wednesday afternoon, which showed crime scene tape around an area in the stands. Several law enforcement officials remained on the scene hours later.

toc-040225-chopper-frisco-track-meet-stabbing.jpg
Crime scene tape is seen surrounding an area in stands at Kuykendall Stadium in Frisco. An altercation between two students at a track meet on April 2, 2025 resulted in one stabbing the other. CBS News Texas Chopper

Police did not say what led up to the stabbing or the altercation. There is no threat to the public, police said. 

Frisco PD said they are collaborating with Frisco ISD and will continue to provide any support they need during this difficult time.

The investigation is ongoing and anyone with information is asked to contact Frisco PD's non-emergency number, (972)292-6010 or by submitting a tip using Text411 and texting FRISCOPD and the tip to 847411.

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=50747257b890e014813016b79ece0fb2'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });