click to enlarge
Shutterstock / Thannaree Deepul
People affected by ClowdStrike's global software outage are reporting seeing blue screens like this when they try to use their Windows 360 computers.
Windows PC users in San Antonio and across the globe woke up Friday to blue screens on their computers, wreaking havoc across critical industries, including air travel, banking, media, healthcare and government agencies.
The outage is the result of a software issue with Austin-based cybersecurity behemoth CrowdStrike. CrowdStrike CEO George Kurtz wrote on social media platform X that the issue is reportedly only affecting Microsoft 365 apps and services. Meanwhile, Mac and Linux users remain online.
"This is not a security incident or cyberattack," Kurtz wrote. "The issue has been identified, isolated and a fix has been deployed."
CrowdStrike is actively working with customers impacted by a defect found in a single content update for Windows hosts. Mac and Linux hosts are not impacted. This is not a security incident or cyberattack. The issue has been identified, isolated and a fix has been deployed. We…
— George Kurtz (@George_Kurtz) July 19, 2024
Although Kurtz didn't offer a timeline for when the problem will be fixed, multiple San Antonio and Texas institutions are feeling the effects of the outage. Here's a rundown:
San Antonio International Airport
The Alamo City's airport is open for business, but it appears to be facing major issues due to the global outage.A total of 59 flights out of San Antonio International Airport are delayed as of press time, and 13 flights are cancelled, according to flight tracking website FlightAware.
12-hour timelapse of American Airlines, Delta, and United plane traffic after what was likely the biggest IT outage in history forced a nationwide ground stop of the three airlines. pic.twitter.com/wwcQeiEtVe
— Colin McCarthy (@US_Stormwatch) July 19, 2024
With seven cancellations, Delta looks to be the airline with the most grounded San Antonio flights. However, Southwest is experiencing the highest number of delays: 25.
Texas Department of Public Safety
The Texas Department of Motor Vehicles announced Friday in a tweet that its systems are down to the global outage.
— Texas Department of Motor Vehicles (@TxDMV) July 19, 2024Friday, July 19, 2024: The Texas Department of Motor Vehicles has been impacted by the global technology outage.
Many department systems and services are unavailable at this time.
We are working to restore all services as soon as possible.
MySA reports that the Bexar County Tax Assessor-Collector's Office is halting all motor vehicle transactions as a result.
San Antonio Emergency Services
The San Antonio Police Department said Thursday that CloudStrike's software issue hasn't affected its systems.
"Emergency 911 calls are going through as usual," SAPD tweeted. "SAPD is aware of the global internet outages and are monitoring it closely. Emergency services are not being impacted at this time.
Emergency 911 calls are going through as usual. SAPD is aware of the global internet outages and are monitoring it closely. Emergency services are not being impacted at this time.
— San Antonio PD (@SATXPolice) July 19, 2024
ERCOT
Highs in San Antonio on Friday are expected to reach the low 90s. Even so, ERCOT said in a statement that Texas' power grid is allegedly unaffected by the global outage.
"ERCOT grid operations have not been affected by the global technology outages," ERCOT wrote on X. "At this time, the grid is operating under normal conditions with no reliability issues."
ERCOT grid operations have not been affected by the global technology outages. At this time, the grid is operating under normal conditions with no reliability issues. To stay updated on real-time grid conditions, visit https://t.co/qI0IdnNJEI.
— ERCOT (@ERCOT_ISO) July 19, 2024
ERCOT encouraged residents to stay up to date on grid conditions by visiting the organization's website.
This is a developing story.
Subscribe to SA Current newsletters.
Follow us: Apple News | Google News | NewsBreak | Reddit | Instagram | Facebook | Twitter| Or sign up for our RSS Feed
') let lineHeight = jQuery('[line-height-check]').get(0).clientHeight; jQuery('[line-height-check]').remove() if (jQuery(element).prop('tagName').match(/HIDDEN/i) !== null) { jQuery(element).children('div').last().css({ marginBottom: `${lineHeight*2}px` }); } else { jQuery(element).css({ marginTop: `${lineHeight*2}px`, marginBottom: `${lineHeight}px` }); } // const insertionBlockClass = `fdn-paragraph-insertion-block`; const styleElementHook = `fdn-paragraph-insertion-styles`; jQuery(element).addClass(insertionBlockClass); if (jQuery(`[${styleElementHook}]`).length === 0) { jQuery('div.fdn-content-body, div #storyBody').append('
') const paragraphLineHeight = jQuery('[line-height-check]').get(0).clientHeight; jQuery('[line-height-check]').remove() const styleElement = jQuery(`
`); const styleText = ` div.fdn-content-body br+.${insertionBlockClass}:not([hidden]), div #storyBody br+.${insertionBlockClass}:not([hidden]) { margin-top: ${paragraphLineHeight*2}px; margin-bottom: ${paragraphLineHeight}px; } div.fdn-content-body br+.${insertionBlockClass}[hidden] > div:last-of-type, div #storyBody br+.${insertionBlockClass}[hidden] > div:last-of-type { margin-bottom: ${paragraphLineHeight*2}px; } ` styleElement.text(styleText); jQuery('head').append(styleElement); } // } } jQuery(element).insertBefore(this.paragraphEndNodes[index]); } else { console.warn('Foundation.ParagraphTool.insertElemenAt: invalid insertion index', index); } } this.insertElemenAtEnd = function (element) { if (this.paragraphEndNodes.length) { let lastNode = this.getNodeAtIndex(this.paragraphEndNodes.length -1); if (this.isDoubleBrParagraphBreak(lastNode) || this.isBrParagraphBreakBeforeBlockElement(lastNode)) { if (jQuery(element).get(0).tagName.match(/SCRIPT/i) !== null) { jQuery('
').insertAfter(this.paragraphEndNodes[index]); jQuery('
').insertAfter(this.paragraphEndNodes[index]); } else { jQuery('div.fdn-content-body, div #storyBody').append('
') let lineHeight = jQuery('[line-height-check]').get(0).clientHeight; jQuery('[line-height-check]').remove() if (jQuery(element).prop('tagName').match(/HIDDEN/i) !== null) { jQuery(element).children('div').last().css({ marginBottom: `${lineHeight*2}px` }); } else { jQuery(element).css({ marginTop: `${lineHeight*2}px`, marginBottom: `${lineHeight}px` }); } } } } this.bodyContainer.append(element); } this.getNodeAtIndex = function (index) { return this.paragraphEndNodes[index]; } }
`); } var paragraphCount = myParagraphTool.getParagraphEndNodeCount(); // No need to insert if there aren't enough paragaphs if (paragraphCount >= parseInt(item.requiredCountToDisplay)) { // Matches specific paragraph insertion indexes if (item.insertPoint.match(/^\d+$/) !== null) { var insertIndex = parseInt(item.insertPoint) - 1; // Insert within content if (insertIndex < paragraphCount) { myParagraphTool.insertElemenAtIndex(componentElement, insertIndex); } // Append to the end if the insert point is beyond the paragraph count else { myParagraphTool.insertElemenAtEnd(componentElement) } } // Matches for 1/2, 1/4, 2/3, 5/6, etc else if (item.insertPoint.match(/^[1223456]\/[23456]$/) !== null) { var fractionMatch = new RegExp(/^([123456])(?:\/)([23456]$)/); var fractionPart = parseInt(item.insertPoint.match(fractionMatch)[1]); var fractionWhole = parseInt(item.insertPoint.match(fractionMatch)[2]); var fractionValue = fractionPart / fractionWhole; var fractionIndex = Math.floor(myParagraphTool.paragraphEndNodes.length * fractionValue) - 1; myParagraphTool.insertElemenAtIndex(componentElement, fractionIndex); } // Matches for every Nth insertion point else if (item.insertPoint.match(/^\d*th$/i) !== null) { var intervalIndex = parseInt(item.insertPoint.match(/^(\d*)th$/i)[1]); var startingIndex = parseInt(item.startingPoint) - 1; var insertionMax = parseInt(item.maxInsertions) || 100; var insertionCount = 0; for (var i = startingIndex; i < myParagraphTool.paragraphEndNodes.length && insertionCount < insertionMax; i++) { if ((i - startingIndex) % intervalIndex === 0) { let currentNode = myParagraphTool.getNodeAtIndex(i); const clonedComponent = componentElement.clone(); myParagraphTool.insertElemenAtIndex(clonedComponent, i); insertionCount++; } } } } }); Foundation.Content['35094125'].setupInlineComponents = function () { return true; }; if (typeof callback === 'function') { callback(); } }, 200); } Foundation.Content['35094125'].previewInsertionPoints = function () { var myParagraphTool = Foundation.Content['35094125'].paragraphTool myParagraphTool.paragraphEndNodes.each((index, item) => { const insertionPointPlaceholder = jQuery(`
`) myParagraphTool.insertElemenAtIndex(insertionPointPlaceholder, index); }); return 'Paragraph insertion placeholders applied.'; }