Entwicklung & Code
Aus Softwarefehlern lernen – Teil 3: Ein Marssonde gerät außer Kontrolle
In der modernen Softwareentwicklung ist Nebenläufigkeit allgegenwärtig. Selbst kleine Anwendungen laufen oft auf Systemen mit mehreren Kernen, interagieren mit Datenbanken, warten auf Netzwerkantworten oder teilen sich Ressourcen wie Dateien und Speicherbereiche. In verteilten Systemen und Embedded-Software kommt noch hinzu, dass verschiedene Prozesse aufeinander reagieren müssen, oft unter Echtzeitbedingungen. Die Praxis zeigt: Sobald mehrere Dinge gleichzeitig passieren können, entstehen neue Fehlerklassen, die sich in seriellen Programmen nie gezeigt hätten.

Golo Roden ist Gründer und CTO von the native web GmbH. Er beschäftigt sich mit der Konzeption und Entwicklung von Web- und Cloud-Anwendungen sowie -APIs, mit einem Schwerpunkt auf Event-getriebenen und Service-basierten verteilten Architekturen. Sein Leitsatz lautet, dass Softwareentwicklung kein Selbstzweck ist, sondern immer einer zugrundeliegenden Fachlichkeit folgen muss.
Die Teile der Serie „Aus Softwarefehlern lernen“:
Muster 3: Concurrency und Scheduling: Wenn sich Prozesse gegenseitig blockieren
Ein berühmtes Beispiel ist der Mars Pathfinder, eine NASA-Mission aus dem Jahr 1997. Die Landung selbst war ein spektakulärer Erfolg – die Sonde setzte sanft auf dem Mars auf und begann, Daten zu senden. Doch kurz darauf kam es zu sporadischen Systemabstürzen und automatischen Resets, die das Team am Boden in Alarmbereitschaft versetzten.
Die Ursache war eine Priority Inversion, ein klassisches Concurrency-Problem. In einem Echtzeitbetriebssystem gibt es Aufgaben mit unterschiedlicher Priorität. Hohe Priorität bedeutet: Diese Aufgabe soll möglichst sofort laufen, sobald sie bereit ist. Niedrige Priorität darf sie nicht blockieren.
Auf dem Pathfinder lief eine solche hochpriorisierte Aufgabe, die Daten vom Wettersensor verarbeitete. Sie benötigte jedoch Zugriff auf eine gemeinsame Ressource – in diesem Fall einen Mutex, der von einer niedrig priorisierten Aufgabe gehalten wurde. Diese niedrig priorisierte Aufgabe wurde wiederum von einer mittel priorisierten Aufgabe ständig verdrängt. Das Ergebnis: Die hochpriorisierte Aufgabe wartete indirekt auf eine niedrige, die nie zum Zuge kam.
Dieses Phänomen der „Umkehrung der Prioritäten“ führte dazu, dass das System in bestimmten Lastsituationen hängen blieb und schließlich neu startete. Die Lösung war im Prinzip einfach: Die Entwicklerinnen und Entwickler aktivierten Priority-Inheritance im Echtzeitbetriebssystem VxWorks. Dadurch erbte die blockierende, niedrig priorisierte Aufgabe vorübergehend die hohe Priorität, sobald eine höherwertige Aufgabe auf sie wartete. Der Knoten löste sich, und die Abstürze verschwanden.
Dieses Beispiel ist lehrreich, weil es gleich mehrere typische Muster verdeutlicht:
- Nebenläufigkeitsfehler sind schwer zu reproduzieren: Sie treten oft nur unter bestimmten Lastprofilen auf.
- Redundanz oder Wiederholungen helfen nicht automatisch: Wenn der Fehler im Design liegt, trifft er alle Instanzen gleichermaßen.
- Kleinste Details im Scheduling können den Unterschied machen: Die Software kann tausendmal korrekt laufen und beim tausend-und-ersten Mal ausfallen.
In modernen Anwendungen können ähnliche Probleme in Form von Deadlocks, Race Conditions oder Livelocks auftreten. Diese zeigen sich meist nicht im lokalen Testlauf, sondern erst in der Produktion, wenn reale Last und reale Parallelität wirken. Doch wie lassen sich solche Fehler vermeiden?
- Klare Lock-Hierarchien: Wenn mehrere Ressourcen gesperrt werden, sollte immer in derselben Reihenfolge gelockt werden.
- Prioritätsprotokolle nutzen: Mechanismen wie Priority Inheritance oder Priority Ceiling sind in vielen Echtzeitbetriebssystemen und sogar in modernen Frameworks verfügbar.
- Nebenläufigkeit entkoppeln: Statt gemeinsame Zustände direkt zu sperren, können Architekturen mit Message Passing oder Actor-Modellen Race Conditions vermeiden.
- Deterministische Tests und Simulationen: Spezielle Testframeworks können Prozesse gezielt verzögern oder Scheduler manipulieren, um seltene Konflikte reproduzierbar zu machen.
- Telemetrie und Monitoring: Auch im Betrieb sollte sichtbar sein, wenn Locks ungewöhnlich lange gehalten werden.
Für Teams, die Web-Backends oder Cloud-Services entwickeln, zeigt sich übrigens dieselbe Gefahr, nur in geringfügig anderer Form: Datenbanktransaktionen, verteilte Caches oder konkurrierende API-Requests können ähnliche Effekte haben. Ein langsamer Hintergrundprozess blockiert einen Lock, während eine Flut von parallelen Requests diesen Zustand eskalieren lässt.
Die Lehre aus dem Pathfinder-Vorfall ist daher zeitlos: Nebenläufigkeit ist kein kostenloser Performance-Booster, sondern ein komplexes System, das Entwicklerinnen und Entwickler explizit entwerfen und überwachen müssen. Wer Concurrency als Randthema behandelt, wird früher oder später auf schwer reproduzierbare und potenziell katastrophale Fehler stoßen.
Aus Softwarefehlern lernen – die Serie
Diese Artikelserie stellt neun typische Fehlerklassen vor, die in der Praxis immer wieder auftauchen – unabhängig von Branche oder Technologie. In jeder Kategorie wird die Serie ein konkretes Beispiel vorstellen, dessen Ursachen analysieren und daraus ableiten, was Softwareentwicklerinnen und Softwareentwickler langfristig lernen können.
Im nächsten Teil lesen Sie: Zeit, Kalender und Geografie: Wenn die Uhr nicht das misst, was man denkt.
(who)
Entwicklung & Code
Sulu 3.0: CMS mit neuem Content-Speicher und klarerer Architektur
Sulu 3.0 ist erschienen. Mit dem Release vollzieht das quelloffene Content-Management-System (CMS) laut Blogbeitrag eine größere technische Umstrukturierung. Statt auf das bislang genutzte PHPCR‑Repository setzt das Projekt künftig vollständig auf Doctrine ORM und JSON‑Felder – eine Entscheidung, die nicht nur die Performance heben, sondern auch die Einstiegshürde für Symfony‑Entwickler senken soll. Nach Angaben des Teams kamen rund 150.000 Zeilen Code neu hinzu, mehr als 265.000 wurden entfernt.
Weiterlesen nach der Anzeige
Das Open-Source-CMS Sulu basiert auf dem PHP-Framework Symfony und dient als Headless‑ oder klassisches CMS für komplexe, mehrsprachige Webprojekte. Es richtet sich vor allem an Entwicklerinnen und Entwickler, die flexible Inhaltsmodelle mit vertrauten Symfony‑Werkzeugen umsetzen wollen. Für Symfony sind kürzlich die Versionen 7.4 und 8.0 erschienen.
Von PHPCR zu Doctrine ORM
Mit der Abkehr vom speicherintensiven PHPCR führt Sulu ein neues Modell zur Ablage von Inhalten ein: Seiten, Artikel oder Snippets werden jetzt als reguläre Doctrine‑Entitäten mit JSON‑Spalten verwaltet. Damit greifen Developer direkt auf bekannte Tools und SQL‑Abfragen zurück, statt eine eigene Query‑Sprache lernen zu müssen.
Das System nutzt sogenannte Dimensionen, um Sprach‑, Veröffentlichungs‑ und Versionszustände abzubilden. So lassen sich nicht übersetzbare Felder in mehreren Sprachvarianten weiterverwenden – ein Ansatz, der die vorherige, tiefer verschachtelte Struktur ersetzt und sich offenbar leichter debuggen lässt.
Bessere Performance und Vereinfachungen
Nach Angaben des Teams bringt der neue Speicheransatz spürbare Leistungsgewinne. Content‑Strukturen lassen sich nun direkt in der Datenbank nachvollziehen, während Konfigurationsdaten weiterhin als XML im Repository bleiben.
Weiterlesen nach der Anzeige
Auch das Update der PHP-Bibliothek Flysystem auf Version 3 soll zur Vereinfachung der Handhabung von Mediendateien beitragen. Diese können künftig über eine einheitliche Schnittstelle auf unterschiedlichen Backends abgelegt werden, beispielsweise auf Amazon S3, Microsoft Azure, WebDAV oder Dropbox.
Entfall der Elasticsearch‑Pflicht für Artikel
Neben der Speicherarchitektur wurde das Artikel‑Bundle neu geschrieben. Es lässt sich nun ohne die Suchmaschine und das Analytic-Tool Elasticsearch betreiben, wodurch kleineren Projekten die Installation eines separaten Suchdienstes erspart bleiben soll. Für große Installationen bleibt die Option durch ein ergänzendes Bundle erhalten, das Elasticsearch wieder einbindet.
Ebenfalls neu ist SEAL, der Search Engine Abstraction Layer. Er bündelt Anbindungen an Suchsysteme wie Loupe, Meilisearch, Solr oder Elasticsearch hinter einer gemeinsamen API. Standardmäßig kommt Loupe zum Einsatz – eine SQLite‑basierte, PHP‑interne Lösung, die für mittlere Datenmengen ausreichend schnell arbeitet.
Migration und Unterstützung
Sulu liefert ein eigenes Tool, um vorhandene PHPCR‑Daten zu konvertieren. Das Migration‑Bundle überführt Seiten, Artikel, Snippets und URLs in die neue Speicherstruktur und protokolliert detailliert, wo gegebenenfalls Nacharbeit nötig ist.
Wer die Umstellung nicht allein durchführen möchte, kann laut Entwicklerteam auf Community‑Hilfe via Slack und GitHub oder auf professionelle Unterstützung zurückgreifen. Weitere Informationen zur Hilfe sowie zum Release finden sich im Blogbeitrag.
Weiterer Fahrplan
Mit Version 3.0 endet die Pflege für Sulu 1.6, während Sulu 2.6 als LTS-Version (Long-term Support) erhalten bleibt. Die neue Architektur soll künftige Funktionen erleichtern und das CMS langfristig wartbarer machen. Näheres zum Release und zum CMS auch auf GitHub.
(mdo)
Entwicklung & Code
Drupal Canvas: Visueller Page Builder für Drupal veröffentlicht
Drupal hat mit Canvas einen visuellen Page Builder veröffentlicht, der die Erstellung individueller Websites ohne umfangreiche Programmierkenntnisse ermöglichen soll. Das Werkzeug richtet sich an Site-Builder und Content-Teams, die bisher zwischen vorgefertigten Templates und aufwendiger individueller Entwicklung wählen mussten.
Weiterlesen nach der Anzeige
Weniger komplizierte Technik für Anwender
Als Open-Source-CMS kommt Drupal zwar bei vielen Organisationen zum Einsatz, die Flexibilität des Systems erforderte jedoch bislang einiges an technischem Know-how. Wie Produktleiter Lauri Timmanee im Drupal-Blog erklärt, existiere in Drupal ein Trade-off: „Entweder man ist gezwungen, eine Art Cookie-Cutter-Website zu erstellen, oder man muss komplexen Code schreiben. Wir wollen diesen Trade-off aufbrechen, indem wir bessere Werkzeuge bereitstellen, damit man tatsächlich Websites erstellen kann, die auf die eigene Marke zugeschnitten sind, ohne komplexen Code kennen zu müssen.“
Drupal Canvas 1.0 basiert auf einem React-Frontend, das mit den Core-APIs von Drupal integriert ist. Die Hauptfunktionen umfassen komponentenbasiertes visuelles Page Building mit einem Drag-and-Drop-Interface, In-Browser-Code-Komponenten zum Hinzufügen neuer Bausteine sowie die Option, mehrere Seiten vor der Veröffentlichung zu erstellen und mit mehrstufigem Undo in der Vorschau zu betrachten. Das System soll Entwicklern mehr Zeit für tiefgreifende technische Arbeiten verschaffen, während nicht-technische Nutzer eigenständiger arbeiten können.
Canvas ist als Community-getriebenes Projekt angelegt, laut Drupal-Roadmap sollen künftig möglichst alle Module im kommenden Drupal CMS 2.0 mit Canvas kompatibel sein. Die Entwickler stellen eine Demo-Installation auf GitHub bereit und sammeln Feedback über den dedizierten Slack-Channel #drupal-canvas. Das Projekt positioniert sich damit in Konkurrenz zu etablierten Page Buildern wie WordPress Gutenberg oder Elementor, setzt aber auf die Stärken von Drupal in Enterprise-Umgebungen.
Ausblick auf Drupal CMS 2.0
Drupal CMS ist eine vorkonfigurierte Distribution auf Basis von Drupal Core, die für schnelle Website-Erstellung mit vorgefertigten Modulen und Workflows optimiert ist, während Drupal Core die minimale, flexible Grundlage für Entwickler bietet. Inzwischen steht Drupal CMS kurz vor der Veröffentlichung der Version 2.0, die laut mehreren Drupal-Experten einen großen Entwicklungssprung für Webentwickler und Nutzer bringen soll. Die neue Generation der Software soll eine verbesserte Performance, modernisierte Benutzeroberfläche und vereinfachte Integrationsmöglichkeiten für KI-gestützte Tools bieten.
Weiterlesen nach der Anzeige
Neben den technischen Verbesserungen soll Drupal CMS 2.0 besonderen Wert auf Barrierefreiheit, Sicherheit und modulare Erweiterbarkeit legen. Durch ein überarbeitetes Framework und optimierte Workflows sollen Entwickler Projekte schneller umsetzen können, während Redakteure von einer klareren Struktur und KI-gestützten Funktionen wie Content-Generierung und SEO-Optimierung profitieren sollen. Das offizielle Release ist aktuell für das erste Quartal 2026 anvisiert, ursprünglich war es für den Oktober 2025 geplant.
(fo)
Entwicklung & Code
Open-Source-Toolkit: KI-Unternehmen Anthropic übernimmt Bun
Bun wurde von Anthropic übernommen, wie der Bun-Erfinder Jarred Sumner auf dem Bun-Blog mitteilt. Das JavaScript-Toolkit, bestehend aus Runtime, Bundler, Test Runner und Paketmanager, soll die Infrastruktur für Anthropics KI-Coding-Technologien Claude Code und Claude Agent SDK sowie künftige KI-Coding-Projekte darstellen.
Weiterlesen nach der Anzeige
Bun bleibt Open Source
Laut Sumners Ausführungen wird Bun auch weiterhin Open Source und MIT-lizenziert bleiben. Auch soll das gleiche Team wie bisher an Bun arbeiten und die Entwicklung weiter öffentlich auf GitHub stattfinden. Die Roadmap soll den Fokus auf Performance und Node.js-Kompatibilität beibehalten – und darauf, Node.js als die standardmäßige serverseitige Runtime für JavaScript zu ersetzen.
(Bild: jaboy/123rf.com)

Die enterJS 2026 wird am 16. und 17. Juni in Mannheim stattfinden. Das Programm wird sich rund um JavaScript und TypeScript, Frameworks, Tools und Bibliotheken, Security, UX und mehr drehen. Vergünstigte Blind-Bird-Tickets sind bis zum Programmstart erhältlich.
Bun erschien erstmals im Juli 2022 und verfolgte bereits damals das Ziel, ein „Drop-in“-Ersatz für Node.js zu werden. Schon innerhalb der ersten Woche erzielte das Projekt 20.000 GitHub-Sterne, wie sich der Bun-Erfinder zurückerinnert. Inzwischen ist die Zahl auf über 83.000 Sterne angestiegen und präsentiert sich seit Version 1.3 als Full‑Stack-JavaScript-Runtime.
Übernahme durch Anthropic
Anthropics Claude Code, ein agentisches KI-Coding-Tool, läuft mit Bun, und bereits während der letzten Monate hat das Bun-Team die Issues des Claude-Code-Teams mit Priorität bearbeitet. Nach Gesprächen mit Anthropic folgt jetzt die Übernahme von Bun, das selbst keine Einnahmen hatte: Anthropic kauft Bun als essenzielle Infrastruktur für Claude Code, die Toolsammlung Claude Agent SDK und zukünftige KI-Coding-Produkte.
Weiterlesen nach der Anzeige
Wie Sumner betont, soll dieser Schritt Bun zu langfristiger Stabilität verhelfen. Außerdem will man nun zusätzliche Software Engineers einstellen. Laut Sumner passen die beiden Seiten auf natürliche Weise zusammen, denn: „Bun begann mit einem Fokus darauf, Developer schneller zu machen. KI-Coding-Tools tun etwas Ähnliches.“
(mai)
-
UX/UI & Webdesignvor 2 MonatenIllustrierte Reise nach New York City › PAGE online
-
Datenschutz & Sicherheitvor 3 MonatenJetzt patchen! Erneut Attacken auf SonicWall-Firewalls beobachtet
-
Künstliche Intelligenzvor 2 MonatenAus Softwarefehlern lernen – Teil 3: Eine Marssonde gerät außer Kontrolle
-
Künstliche Intelligenzvor 2 Monaten
Top 10: Die beste kabellose Überwachungskamera im Test
-
UX/UI & Webdesignvor 3 MonatenFake It Untlil You Make It? Trifft diese Kampagne den Nerv der Zeit? › PAGE online
-
Entwicklung & Codevor 3 WochenKommandozeile adé: Praktische, grafische Git-Verwaltung für den Mac
-
UX/UI & Webdesignvor 2 MonatenSK Rapid Wien erneuert visuelle Identität
-
Social Mediavor 3 MonatenSchluss mit FOMO im Social Media Marketing – Welche Trends und Features sind für Social Media Manager*innen wirklich relevant?
