[Bug] Bootable El-Torito ISO errors and fails on extraction with debug flag #1010

Open
opened 2026-01-29 15:38:26 +00:00 by claunia · 1 comment
Owner

Originally created by @Whovian9369 on GitHub (Mar 13, 2025).

Version

Development commit

Commit hash

56a81aaf

Tested debug version?

  • Yes

Which operating systems have you used?

  • Windows
  • Linux
  • macOS
  • Other

What is the architectural bit size you're using?

  • 32-bit
  • 64-bit
  • Unsure or unknown

What processor are you using?

  • An Intel or AMD
  • An ARM or Apple Silicon
  • Unsure or unknown

Image format

ISO

Application that created the image

Nero Burning ROM ver 12,5,5,0

What were you doing when it failed?

  • I was converting the image to another format...
  • I was retrieving image information...
  • I was retrieving filesystem information...
  • I was listing the filesystem contents...
  • I was extracting the filesystem contents...
  • I was creating a metadata sidecar...
  • I was checksumming the image...
  • I was verifying the image...
  • I was calculating the image entropy...

Destination image format

No response

Filesystem

ISO9660/Joliet

Description

Trying to extract El-Torito ISO with debug flag errors out instead of successfully extracting files from the image.
Error in question is:

Error reading file: Unbalanced markup stack. Did you forget to close a tag?
System.InvalidOperationException: Unbalanced markup stack. Did you forget to close a tag?
  at Paragraph Spectre.Console.MarkupParser.Parse(string text, Style style) in /_/src/Spectre.Console/Internal/Text/Markup/MarkupParser.cs:55
  at void Spectre.Console.AnsiConsoleExtensions.Markup(IAnsiConsole console, string value) in /_/src/Spectre.Console/Extensions/AnsiConsoleExtensions.Markup.cs:77
  at void Spectre.Console.AnsiConsoleExtensions.Markup(IAnsiConsole console, IFormatProvider provider, string format, params object[] args) in /_/src/Spectre.Console/Extensions/AnsiConsoleExtensions.Markup.cs:47
  at void Spectre.Console.AnsiConsoleExtensions.MarkupLine(IAnsiConsole console, IFormatProvider provider, string format, params object[] args) in /_/src/Spectre.Console/Extensions/AnsiConsoleExtensions.Markup.cs:129
  at void Spectre.Console.AnsiConsoleExtensions.MarkupLine(IAnsiConsole console, string format, params object[] args) in /_/src/Spectre.Console/Extensions/AnsiConsoleExtensions.Markup.cs:88
  at void Aaru.Commands.Filesystem.ExtractFilesCommand.<>c__DisplayClass3_1.<Invoke>b__2(string format, object[] objects) in /build/source/Aaru/Commands/Filesystem/ExtractFiles.cs:104
  at void Aaru.Console.AaruConsole.DebugWriteLine(string module, string format, params object[] arg) in /build/source/Aaru.Console/AaruConsole.cs:188
  at bool Aaru.Partitions.Apricot.GetInformation(IMediaImage imagePlugin, out List<Partition> partitions, ulong sectorOffset) in /build/source/Aaru.Partitions/Apricot.cs:300
  at List<Partition> Aaru.Core.Partitions.GetAll(IMediaImage image) in /build/source/Aaru.Core/Partitions.cs:92
  at void Aaru.Commands.Filesystem.ExtractFilesCommand.<>c__DisplayClass3_2.<Invoke>b__5(ProgressContext ctx) in /build/source/Aaru/Commands/Filesystem/ExtractFiles.cs:269
  at Task Spectre.Console.Progress.<>c__DisplayClass29_0.<Start>b__0(ProgressContext ctx) in /_/src/Spectre.Console/Live/Progress/Progress.cs:70
  at void Spectre.Console.Progress.<>c__DisplayClass31_0.<<StartAsync>b__0>d.MoveNext() in /_/src/Spectre.Console/Live/Progress/Progress.cs:103
  at void Spectre.Console.Progress.<>c__DisplayClass32_0`1.<<StartAsync>b__0>d.MoveNext() in /_/src/Spectre.Console/Live/Progress/Progress.cs:138
  at async Task<T> Spectre.Console.Internal.DefaultExclusivityMode.RunAsync<T>(Func<Task<T>> func) in /_/src/Spectre.Console/Internal/DefaultExclusivityMode.cs:40
  at async Task<T> Spectre.Console.Progress.StartAsync<T>(Func<ProgressContext, Task<T>> action) in /_/src/Spectre.Console/Live/Progress/Progress.cs:121
  at async Task Spectre.Console.Progress.StartAsync(Func<ProgressContext, Task> action) in /_/src/Spectre.Console/Live/Progress/Progress.cs:101
  at void Spectre.Console.Progress.Start(Action<ProgressContext> action) in /_/src/Spectre.Console/Live/Progress/Progress.cs:74
  at void Aaru.Core.Spectre.ProgressSingleSpinner(Action<ProgressContext> action) in /build/source/Aaru.Core/Spectre.cs:11
  at int Aaru.Commands.Filesystem.ExtractFilesCommand.Invoke(bool debug, bool verbose, string encoding, bool xattrs, string imagePath, string namespace, string outputDir, string options) in /build/source/Aaru/Commands/Filesystem/ExtractFiles.cs:266

Exact command line used

aaru fs extract -d "r11uj23wd.iso" "r11uj23wd.iso_aaru"

Expected behavior

Files to extract properly from image.

Actual behavior

Throws an error.

Output of command execution with debug output enabled

$  aaru fs extract -d "r11uj23wd.iso" "r11uj23wd.iso_aaru"
aaru 6.0.0.0+56a81aaf
Copyright © 2011-2025 Natalia Portillo

DEBUG (Extract-Files command): --debug=True
DEBUG (Extract-Files command): --encoding=
DEBUG (Extract-Files command): --input=r11uj23wd.iso
DEBUG (Extract-Files command): --options=
DEBUG (Extract-Files command): --output=r11uj23wd.iso_aaru
DEBUG (Extract-Files command): --verbose=False
DEBUG (Extract-Files command): --xattrs=False
DEBUG (Extract-Files command): Parsed options:
DEBUG (Format detection): Trying plugin A2R
DEBUG (Format detection): Trying plugin Aaru Format
DEBUG (Format detection): Trying plugin ACT Apricot Disk Image
DEBUG (Format detection): Trying plugin Alcohol 120% Media Descriptor Structure
DEBUG (Format detection): Trying plugin Anex86 Disk Image
DEBUG (Anex86 plugin): fdihdr.unknown = 0
DEBUG (Anex86 plugin): fdihdr.hddtype = 0
DEBUG (Anex86 plugin): fdihdr.hdrSize = 0
DEBUG (Anex86 plugin): fdihdr.dskSize = 0
DEBUG (Anex86 plugin): fdihdr.bps = 0
DEBUG (Anex86 plugin): fdihdr.spt = 0
DEBUG (Anex86 plugin): fdihdr.heads = 0
DEBUG (Anex86 plugin): fdihdr.cylinders = 0
DEBUG (Format detection): Trying plugin Apple 2IMG
DEBUG (Format detection): Trying plugin Apple Disk Archival/Retrieval Tool
DEBUG (Format detection): Trying plugin Apple DiskCopy 4.2
DEBUG (DiskCopy 4.2 plugin): tmp_header.diskName = ""
DEBUG (DiskCopy 4.2 plugin): tmp_header.dataSize = 0 bytes
DEBUG (DiskCopy 4.2 plugin): tmp_header.tagSize = 0 bytes
DEBUG (DiskCopy 4.2 plugin): tmp_header.dataChecksum = 0x00000000
DEBUG (DiskCopy 4.2 plugin): tmp_header.tagChecksum = 0x00000000
DEBUG (DiskCopy 4.2 plugin): tmp_header.format = 0x00
DEBUG (DiskCopy 4.2 plugin): tmp_header.fmtByte = 0x00
DEBUG (DiskCopy 4.2 plugin): tmp_header.valid = 0
DEBUG (DiskCopy 4.2 plugin): tmp_header.reserved = 0
DEBUG (Format detection): Trying plugin Apple New Disk Image Format
DEBUG (Format detection): Trying plugin Apple NIB
DEBUG (Format detection): Trying plugin Apple Universal Disk Image Format
DEBUG (Format detection): Trying plugin Basic Lisa Utility
DEBUG (Format detection): Trying plugin BlindWrite 4
DEBUG (Format detection): Trying plugin BlindWrite 5
DEBUG (Format detection): Trying plugin CDRDAO tocfile
DEBUG (Format detection): Trying plugin CDRWin cuesheet
DEBUG (Format detection): Trying plugin CisCopy Disk Image (DC-File)
DEBUG (Format detection): Trying plugin CloneCD
DEBUG (Format detection): Trying plugin CopyTape
DEBUG (Format detection): Trying plugin CPCEMU Disk-File and Extended CPC Disk-File
DEBUG (Format detection): Trying plugin d2f disk image
DEBUG (Format detection): Trying plugin D88 Disk Image
DEBUG (D88 plugin): d88hdr.name = ""
DEBUG (D88 plugin): d88hdr.reserved is empty? = True
DEBUG (D88 plugin): d88hdr.write_protect = 0x00
DEBUG (D88 plugin): d88hdr.disk_type = D2 (0)
DEBUG (D88 plugin): d88hdr.disk_size = 0
DEBUG (Format detection): Trying plugin Digital Research DiskCopy
DEBUG (Format detection): Trying plugin DIM Disk Image
DEBUG (Format detection): Trying plugin DiscFerret
DEBUG (Format detection): Trying plugin DiscJuggler
DEBUG (DiscJuggler plugin): dscLen = 0
DEBUG (Format detection): Trying plugin DiskDupe DDI Disk Image
DEBUG (Format detection): Trying plugin Dreamcast GDI image
DEBUG (Format detection): Trying plugin Dunfield's IMD
DEBUG (Format detection): Trying plugin HD-Copy disk image
DEBUG (Format detection): Trying plugin IBM SaveDskF
DEBUG (Format detection): Trying plugin KryoFlux STREAM
DEBUG (Format detection): Trying plugin MAME Compressed Hunks of Data
DEBUG (Format detection): Trying plugin MAXI Disk image
DEBUG (MAXI Disk plugin): tmp_header.unknown = 0
DEBUG (MAXI Disk plugin): tmp_header.diskType = 0
DEBUG (MAXI Disk plugin): tmp_header.heads = 0
DEBUG (MAXI Disk plugin): tmp_header.cylinders = 0
DEBUG (MAXI Disk plugin): tmp_header.bytesPerSector = 0
DEBUG (MAXI Disk plugin): tmp_header.sectorsPerTrack = 0
DEBUG (MAXI Disk plugin): tmp_header.unknown2 = 0
DEBUG (MAXI Disk plugin): tmp_header.unknown3 = 0
DEBUG (Format detection): Trying plugin Microsoft VHDX
DEBUG (Format detection): Trying plugin Nero Burning ROM image

Identifying image format... ⣷
                             DEBUG (Nero plugin): imageStream.Length = 26587136
DEBUG (Nero plugin): footerV1.ChunkID = 0x00000000
DEBUG (Nero plugin): footerV1.FirstChunkOffset = 0
DEBUG (Nero plugin): footerV2.ChunkID = 0x00000000
DEBUG (Nero plugin): footerV2.FirstChunkOffset = 0
DEBUG (Format detection): Trying plugin Parallels disk image
DEBUG (Format detection): Trying plugin PartClone disk image
DEBUG (Format detection): Trying plugin Partimage disk image
DEBUG (Format detection): Trying plugin QEMU Copy-On-Write disk image
DEBUG (Format detection): Trying plugin QEMU Copy-On-Write disk image v2
DEBUG (QCOW2 plugin): qHdr.magic = 0x00000000
DEBUG (QCOW2 plugin): qHdr.version = 0
DEBUG (Format detection): Trying plugin QEMU Enhanced Disk image
DEBUG (Format detection): Trying plugin Ray Arachelian's Disk IMage
DEBUG (Ray Arachelian's Disk IMage plugin): header.signature =
DEBUG (Ray Arachelian's Disk IMage plugin): header.diskType = 0
DEBUG (Ray Arachelian's Disk IMage plugin): header.heads = 0
DEBUG (Ray Arachelian's Disk IMage plugin): header.cylinders = 0
DEBUG (Ray Arachelian's Disk IMage plugin): header.sectorsPerTrack = 0
DEBUG (Ray Arachelian's Disk IMage plugin): header.signature matches? = False
DEBUG (Format detection): Trying plugin RS-IDE Hard Disk Image
DEBUG (Format detection): Trying plugin Spectrum Floppy Disk Image
DEBUG (Format detection): Trying plugin SuperCardPro
DEBUG (Format detection): Trying plugin Sydex CopyQM
DEBUG (Format detection): Trying plugin Sydex TeleDisk
DEBUG (Format detection): Trying plugin T98 Hard Disk Image
DEBUG (T98 plugin): cylinders = 0
DEBUG (Format detection): Trying plugin T98-Next NHD r0 Disk Image
DEBUG (Format detection): Trying plugin Virtual PC
DEBUG (Format detection): Trying plugin Virtual98 Disk Image
DEBUG (Format detection): Trying plugin VirtualBox Disk Image
DEBUG (Format detection): Trying plugin VMware disk image
DEBUG (Format detection): Trying plugin Atari Lynx
DEBUG (Format detection): Trying plugin iNES
DEBUG (Format detection): Trying plugin Nintendo 64
DEBUG (Format detection): Trying plugin Nintendo Game Boy
DEBUG (Format detection): Trying plugin Nintendo Game Boy Advance
DEBUG (Format detection): Trying plugin Sega Game Gear / Master System
DEBUG (Format detection): Trying plugin Sega Mega Drive / 32X / Pico
Image format identified by Raw Disk Image.
DEBUG (Extract-Files command): Correctly opened image file.
DEBUG (Extract-Files command): Image without headers is 26587136 bytes.
DEBUG (Extract-Files command): Image has 12982 sectors.
DEBUG (Extract-Files command): Image identifies media type as CD.
DEBUG (Apricot partitions plugin): label.version = ""
DEBUG (Apricot partitions plugin): label.operatingSystem = 0 (Invalid)
DEBUG (Apricot partitions plugin): label.writeProtected = False
DEBUG (Apricot partitions plugin): label.copyProtected = False
DEBUG (Apricot partitions plugin): label.bootType = 0 (Non-bootable)
DEBUG (Apricot partitions plugin): label.partitionCount = 0
DEBUG (Apricot partitions plugin): label.winchester = False
DEBUG (Apricot partitions plugin): label.sectorSize = 0
DEBUG (Apricot partitions plugin): label.spt = 0
DEBUG (Apricot partitions plugin): label.cylinders = 0
DEBUG (Apricot partitions plugin): label.heads = 0
DEBUG (Apricot partitions plugin): label.interleave = 0
DEBUG (Apricot partitions plugin): label.skew = 0
DEBUG (Apricot partitions plugin): label.bootLocation = 0
DEBUG (Apricot partitions plugin): label.bootSize = 0
DEBUG (Apricot partitions plugin): label.bootAddress = 0x00000000
DEBUG (Apricot partitions plugin): label.bootOffset:label.bootSegment = 0000:0000
DEBUG (Apricot partitions plugin): label.firstDataBlock = 0
DEBUG (Apricot partitions plugin): label.generation = 0
DEBUG (Apricot partitions plugin): label.copyCount = 0
DEBUG (Apricot partitions plugin): label.maxCopies = 0
DEBUG (Apricot partitions plugin): label.serialNumber = ""
DEBUG (Apricot partitions plugin): label.partNumber = ""
DEBUG (Apricot partitions plugin): label.copyright = ""
DEBUG (Apricot partitions plugin): label.mainBPB.bps = 0
DEBUG (Apricot partitions plugin): label.mainBPB.spc = 0
DEBUG (Apricot partitions plugin): label.mainBPB.rsectors = 0
DEBUG (Apricot partitions plugin): label.mainBPB.fats_no = 0
DEBUG (Apricot partitions plugin): label.mainBPB.root_ent = 0
DEBUG (Apricot partitions plugin): label.mainBPB.sectors = 0
DEBUG (Apricot partitions plugin): label.mainBPB.media = 0
DEBUG (Apricot partitions plugin): label.mainBPB.spfat = 0
DEBUG (Apricot partitions plugin): label.mainBPB.diskType = 0 (MF1DD 70-track)
DEBUG (Apricot partitions plugin): label.mainBPB.startSector = 0
DEBUG (Apricot partitions plugin): label.fontName = ""
DEBUG (Apricot partitions plugin): label.keyboardName = ""
DEBUG (Apricot partitions plugin): label.biosMajorVersion = 0
DEBUG (Apricot partitions plugin): label.biosMinorVersion = 0
DEBUG (Apricot partitions plugin): label.diagnosticsFlag = False
DEBUG (Apricot partitions plugin): label.prnDevice = 0 (Parallel)
DEBUG (Apricot partitions plugin): label.bellVolume = 0
DEBUG (Apricot partitions plugin): label.enableCache = False
DEBUG (Apricot partitions plugin): label.enableGraphics = False
DEBUG (Apricot partitions plugin): label.dosLength = 0
DEBUG (Apricot partitions plugin): label.fontLength = 0
DEBUG (Apricot partitions plugin): label.keyboardLength = 0
DEBUG (Apricot partitions plugin): label.dosStart = 0
DEBUG (Apricot partitions plugin): label.fontStart = 0
DEBUG (Apricot partitions plugin): label.keyboardStart = 0
DEBUG (Apricot partitions plugin): label.keyboardVolume = 0
DEBUG (Apricot partitions plugin): label.autorepeat = False
DEBUG (Apricot partitions plugin): label.autorepeatLeadIn = 0
DEBUG (Apricot partitions plugin): label.autorepeatInterval = 0
DEBUG (Apricot partitions plugin): label.microscreenMode = 0
DEBUG (Apricot partitions plugin): label.spareKeyboard is null? = True
DEBUG (Apricot partitions plugin): label.lineMode = 0 (256 lines)
DEBUG (Apricot partitions plugin): label.lineWidth = 0 (80 columns)
DEBUG (Apricot partitions plugin): label.imageOff = False
DEBUG (Apricot partitions plugin): label.spareScreen is null? = True
DEBUG (Apricot partitions plugin): label.txBaudRate = 0 (50 bps)
DEBUG (Apricot partitions plugin): label.rxBaudRate = 0 (50 bps)
DEBUG (Apricot partitions plugin): label.txBits = 0
DEBUG (Apricot partitions plugin): label.rxBits = 0
DEBUG (Apricot partitions plugin): label.stopBits = 0 (1 bits)
DEBUG (Apricot partitions plugin): label.parityCheck = False
DEBUG (Apricot partitions plugin): label.parityType = 0 (None)
DEBUG (Apricot partitions plugin): label.txXonXoff = False
DEBUG (Apricot partitions plugin): label.rxXonXoff = False
DEBUG (Apricot partitions plugin): label.xonCharacter = 0
DEBUG (Apricot partitions plugin): label.xoffCharacter = 0
DEBUG (Apricot partitions plugin): label.rxXonXoffBuffer = 0
DEBUG (Apricot partitions plugin): label.dtrDsr = False
DEBUG (Apricot partitions plugin): label.ctsRts = False
DEBUG (Apricot partitions plugin): label.nullsAfterCr = 0
DEBUG (Apricot partitions plugin): label.nullsAfterFF = 0
DEBUG (Apricot partitions plugin): label.lfAfterCRSerial = False
DEBUG (Apricot partitions plugin): label.biosErrorReportSerial = False
DEBUG (Apricot partitions plugin): label.spareSerial is null? = True
DEBUG (Apricot partitions plugin): label.lfAfterCrParallel = False
DEBUG (Apricot partitions plugin): label.selectLine = False
DEBUG (Apricot partitions plugin): label.paperEmpty = False
DEBUG (Apricot partitions plugin): label.faultLine = False
DEBUG (Apricot partitions plugin): label.biosErrorReportParallel = False
DEBUG (Apricot partitions plugin): label.spareParallel is null? = True
DEBUG (Apricot partitions plugin): label.spareWinchester is null? = True
DEBUG (Apricot partitions plugin): label.parkingEnabled = False
DEBUG (Apricot partitions plugin): label.formatProtection = False
DEBUG (Apricot partitions plugin): label.spareRamDisk is null? = True
Error reading file: Unbalanced markup stack. Did you forget to close a tag?
System.InvalidOperationException: Unbalanced markup stack. Did you forget to close a tag?
  at Paragraph Spectre.Console.MarkupParser.Parse(string text, Style style) in /_/src/Spectre.Console/Internal/Text/Markup/MarkupParser.cs:55
  at void Spectre.Console.AnsiConsoleExtensions.Markup(IAnsiConsole console, string value) in /_/src/Spectre.Console/Extensions/AnsiConsoleExtensions.Markup.cs:77
  at void Spectre.Console.AnsiConsoleExtensions.Markup(IAnsiConsole console, IFormatProvider provider, string format, params object[] args) in /_/src/Spectre.Console/Extensions/AnsiConsoleExtensions.Markup.cs:47
  at void Spectre.Console.AnsiConsoleExtensions.MarkupLine(IAnsiConsole console, IFormatProvider provider, string format, params object[] args) in /_/src/Spectre.Console/Extensions/AnsiConsoleExtensions.Markup.cs:129
  at void Spectre.Console.AnsiConsoleExtensions.MarkupLine(IAnsiConsole console, string format, params object[] args) in /_/src/Spectre.Console/Extensions/AnsiConsoleExtensions.Markup.cs:88
  at void Aaru.Commands.Filesystem.ExtractFilesCommand.<>c__DisplayClass3_1.<Invoke>b__2(string format, object[] objects) in /build/source/Aaru/Commands/Filesystem/ExtractFiles.cs:104
  at void Aaru.Console.AaruConsole.DebugWriteLine(string module, string format, params object[] arg) in /build/source/Aaru.Console/AaruConsole.cs:188
  at bool Aaru.Partitions.Apricot.GetInformation(IMediaImage imagePlugin, out List<Partition> partitions, ulong sectorOffset) in /build/source/Aaru.Partitions/Apricot.cs:300
  at List<Partition> Aaru.Core.Partitions.GetAll(IMediaImage image) in /build/source/Aaru.Core/Partitions.cs:92
  at void Aaru.Commands.Filesystem.ExtractFilesCommand.<>c__DisplayClass3_2.<Invoke>b__5(ProgressContext ctx) in /build/source/Aaru/Commands/Filesystem/ExtractFiles.cs:269
  at Task Spectre.Console.Progress.<>c__DisplayClass29_0.<Start>b__0(ProgressContext ctx) in /_/src/Spectre.Console/Live/Progress/Progress.cs:70
  at void Spectre.Console.Progress.<>c__DisplayClass31_0.<<StartAsync>b__0>d.MoveNext() in /_/src/Spectre.Console/Live/Progress/Progress.cs:103
  at void Spectre.Console.Progress.<>c__DisplayClass32_0`1.<<StartAsync>b__0>d.MoveNext() in /_/src/Spectre.Console/Live/Progress/Progress.cs:138
  at async Task<T> Spectre.Console.Internal.DefaultExclusivityMode.RunAsync<T>(Func<Task<T>> func) in /_/src/Spectre.Console/Internal/DefaultExclusivityMode.cs:40
  at async Task<T> Spectre.Console.Progress.StartAsync<T>(Func<ProgressContext, Task<T>> action) in /_/src/Spectre.Console/Live/Progress/Progress.cs:121
  at async Task Spectre.Console.Progress.StartAsync(Func<ProgressContext, Task> action) in /_/src/Spectre.Console/Live/Progress/Progress.cs:101
  at void Spectre.Console.Progress.Start(Action<ProgressContext> action) in /_/src/Spectre.Console/Live/Progress/Progress.cs:74
  at void Aaru.Core.Spectre.ProgressSingleSpinner(Action<ProgressContext> action) in /build/source/Aaru.Core/Spectre.cs:11
  at int Aaru.Commands.Filesystem.ExtractFilesCommand.Invoke(bool debug, bool verbose, string encoding, bool xattrs, string imagePath, string namespace, string outputDir, string options) in /build/source/Aaru/Commands/Filesystem/ExtractFiles.cs:266

Affected image

Image tested: https://download.lenovo.com/pccbbs/mobiles/r11uj23wd.iso
Other bootable ISOs listed on Lenovo's webpage for BIOS/UEFI updates for the ThinkPad E595 also appear to suffer from this issue based on super quick testing.

Originally created by @Whovian9369 on GitHub (Mar 13, 2025). ### Version Development commit ### Commit hash 56a81aaf ### Tested debug version? - [x] Yes ### Which operating systems have you used? - [ ] Windows - [x] Linux - [ ] macOS - [ ] Other ### What is the architectural bit size you're using? - [ ] 32-bit - [x] 64-bit - [ ] Unsure or unknown ### What processor are you using? - [x] An Intel or AMD - [ ] An ARM or Apple Silicon - [ ] Unsure or unknown ### Image format ISO ### Application that created the image Nero Burning ROM ver 12,5,5,0 ### What were you doing when it failed? - [ ] I was converting the image to another format... - [ ] I was retrieving image information... - [ ] I was retrieving filesystem information... - [ ] I was listing the filesystem contents... - [x] I was extracting the filesystem contents... - [ ] I was creating a metadata sidecar... - [ ] I was checksumming the image... - [ ] I was verifying the image... - [ ] I was calculating the image entropy... ### Destination image format _No response_ ### Filesystem ISO9660/Joliet ### Description Trying to extract El-Torito ISO with debug flag errors out instead of successfully extracting files from the image. Error in question is: ``` Error reading file: Unbalanced markup stack. Did you forget to close a tag? System.InvalidOperationException: Unbalanced markup stack. Did you forget to close a tag? at Paragraph Spectre.Console.MarkupParser.Parse(string text, Style style) in /_/src/Spectre.Console/Internal/Text/Markup/MarkupParser.cs:55 at void Spectre.Console.AnsiConsoleExtensions.Markup(IAnsiConsole console, string value) in /_/src/Spectre.Console/Extensions/AnsiConsoleExtensions.Markup.cs:77 at void Spectre.Console.AnsiConsoleExtensions.Markup(IAnsiConsole console, IFormatProvider provider, string format, params object[] args) in /_/src/Spectre.Console/Extensions/AnsiConsoleExtensions.Markup.cs:47 at void Spectre.Console.AnsiConsoleExtensions.MarkupLine(IAnsiConsole console, IFormatProvider provider, string format, params object[] args) in /_/src/Spectre.Console/Extensions/AnsiConsoleExtensions.Markup.cs:129 at void Spectre.Console.AnsiConsoleExtensions.MarkupLine(IAnsiConsole console, string format, params object[] args) in /_/src/Spectre.Console/Extensions/AnsiConsoleExtensions.Markup.cs:88 at void Aaru.Commands.Filesystem.ExtractFilesCommand.<>c__DisplayClass3_1.<Invoke>b__2(string format, object[] objects) in /build/source/Aaru/Commands/Filesystem/ExtractFiles.cs:104 at void Aaru.Console.AaruConsole.DebugWriteLine(string module, string format, params object[] arg) in /build/source/Aaru.Console/AaruConsole.cs:188 at bool Aaru.Partitions.Apricot.GetInformation(IMediaImage imagePlugin, out List<Partition> partitions, ulong sectorOffset) in /build/source/Aaru.Partitions/Apricot.cs:300 at List<Partition> Aaru.Core.Partitions.GetAll(IMediaImage image) in /build/source/Aaru.Core/Partitions.cs:92 at void Aaru.Commands.Filesystem.ExtractFilesCommand.<>c__DisplayClass3_2.<Invoke>b__5(ProgressContext ctx) in /build/source/Aaru/Commands/Filesystem/ExtractFiles.cs:269 at Task Spectre.Console.Progress.<>c__DisplayClass29_0.<Start>b__0(ProgressContext ctx) in /_/src/Spectre.Console/Live/Progress/Progress.cs:70 at void Spectre.Console.Progress.<>c__DisplayClass31_0.<<StartAsync>b__0>d.MoveNext() in /_/src/Spectre.Console/Live/Progress/Progress.cs:103 at void Spectre.Console.Progress.<>c__DisplayClass32_0`1.<<StartAsync>b__0>d.MoveNext() in /_/src/Spectre.Console/Live/Progress/Progress.cs:138 at async Task<T> Spectre.Console.Internal.DefaultExclusivityMode.RunAsync<T>(Func<Task<T>> func) in /_/src/Spectre.Console/Internal/DefaultExclusivityMode.cs:40 at async Task<T> Spectre.Console.Progress.StartAsync<T>(Func<ProgressContext, Task<T>> action) in /_/src/Spectre.Console/Live/Progress/Progress.cs:121 at async Task Spectre.Console.Progress.StartAsync(Func<ProgressContext, Task> action) in /_/src/Spectre.Console/Live/Progress/Progress.cs:101 at void Spectre.Console.Progress.Start(Action<ProgressContext> action) in /_/src/Spectre.Console/Live/Progress/Progress.cs:74 at void Aaru.Core.Spectre.ProgressSingleSpinner(Action<ProgressContext> action) in /build/source/Aaru.Core/Spectre.cs:11 at int Aaru.Commands.Filesystem.ExtractFilesCommand.Invoke(bool debug, bool verbose, string encoding, bool xattrs, string imagePath, string namespace, string outputDir, string options) in /build/source/Aaru/Commands/Filesystem/ExtractFiles.cs:266 ``` ### Exact command line used `aaru fs extract -d "r11uj23wd.iso" "r11uj23wd.iso_aaru"` ### Expected behavior Files to extract properly from image. ### Actual behavior Throws an error. ### Output of command execution with debug output enabled ```shell $ aaru fs extract -d "r11uj23wd.iso" "r11uj23wd.iso_aaru" aaru 6.0.0.0+56a81aaf Copyright © 2011-2025 Natalia Portillo DEBUG (Extract-Files command): --debug=True DEBUG (Extract-Files command): --encoding= DEBUG (Extract-Files command): --input=r11uj23wd.iso DEBUG (Extract-Files command): --options= DEBUG (Extract-Files command): --output=r11uj23wd.iso_aaru DEBUG (Extract-Files command): --verbose=False DEBUG (Extract-Files command): --xattrs=False DEBUG (Extract-Files command): Parsed options: DEBUG (Format detection): Trying plugin A2R DEBUG (Format detection): Trying plugin Aaru Format DEBUG (Format detection): Trying plugin ACT Apricot Disk Image DEBUG (Format detection): Trying plugin Alcohol 120% Media Descriptor Structure DEBUG (Format detection): Trying plugin Anex86 Disk Image DEBUG (Anex86 plugin): fdihdr.unknown = 0 DEBUG (Anex86 plugin): fdihdr.hddtype = 0 DEBUG (Anex86 plugin): fdihdr.hdrSize = 0 DEBUG (Anex86 plugin): fdihdr.dskSize = 0 DEBUG (Anex86 plugin): fdihdr.bps = 0 DEBUG (Anex86 plugin): fdihdr.spt = 0 DEBUG (Anex86 plugin): fdihdr.heads = 0 DEBUG (Anex86 plugin): fdihdr.cylinders = 0 DEBUG (Format detection): Trying plugin Apple 2IMG DEBUG (Format detection): Trying plugin Apple Disk Archival/Retrieval Tool DEBUG (Format detection): Trying plugin Apple DiskCopy 4.2 DEBUG (DiskCopy 4.2 plugin): tmp_header.diskName = "" DEBUG (DiskCopy 4.2 plugin): tmp_header.dataSize = 0 bytes DEBUG (DiskCopy 4.2 plugin): tmp_header.tagSize = 0 bytes DEBUG (DiskCopy 4.2 plugin): tmp_header.dataChecksum = 0x00000000 DEBUG (DiskCopy 4.2 plugin): tmp_header.tagChecksum = 0x00000000 DEBUG (DiskCopy 4.2 plugin): tmp_header.format = 0x00 DEBUG (DiskCopy 4.2 plugin): tmp_header.fmtByte = 0x00 DEBUG (DiskCopy 4.2 plugin): tmp_header.valid = 0 DEBUG (DiskCopy 4.2 plugin): tmp_header.reserved = 0 DEBUG (Format detection): Trying plugin Apple New Disk Image Format DEBUG (Format detection): Trying plugin Apple NIB DEBUG (Format detection): Trying plugin Apple Universal Disk Image Format DEBUG (Format detection): Trying plugin Basic Lisa Utility DEBUG (Format detection): Trying plugin BlindWrite 4 DEBUG (Format detection): Trying plugin BlindWrite 5 DEBUG (Format detection): Trying plugin CDRDAO tocfile DEBUG (Format detection): Trying plugin CDRWin cuesheet DEBUG (Format detection): Trying plugin CisCopy Disk Image (DC-File) DEBUG (Format detection): Trying plugin CloneCD DEBUG (Format detection): Trying plugin CopyTape DEBUG (Format detection): Trying plugin CPCEMU Disk-File and Extended CPC Disk-File DEBUG (Format detection): Trying plugin d2f disk image DEBUG (Format detection): Trying plugin D88 Disk Image DEBUG (D88 plugin): d88hdr.name = "" DEBUG (D88 plugin): d88hdr.reserved is empty? = True DEBUG (D88 plugin): d88hdr.write_protect = 0x00 DEBUG (D88 plugin): d88hdr.disk_type = D2 (0) DEBUG (D88 plugin): d88hdr.disk_size = 0 DEBUG (Format detection): Trying plugin Digital Research DiskCopy DEBUG (Format detection): Trying plugin DIM Disk Image DEBUG (Format detection): Trying plugin DiscFerret DEBUG (Format detection): Trying plugin DiscJuggler DEBUG (DiscJuggler plugin): dscLen = 0 DEBUG (Format detection): Trying plugin DiskDupe DDI Disk Image DEBUG (Format detection): Trying plugin Dreamcast GDI image DEBUG (Format detection): Trying plugin Dunfield's IMD DEBUG (Format detection): Trying plugin HD-Copy disk image DEBUG (Format detection): Trying plugin IBM SaveDskF DEBUG (Format detection): Trying plugin KryoFlux STREAM DEBUG (Format detection): Trying plugin MAME Compressed Hunks of Data DEBUG (Format detection): Trying plugin MAXI Disk image DEBUG (MAXI Disk plugin): tmp_header.unknown = 0 DEBUG (MAXI Disk plugin): tmp_header.diskType = 0 DEBUG (MAXI Disk plugin): tmp_header.heads = 0 DEBUG (MAXI Disk plugin): tmp_header.cylinders = 0 DEBUG (MAXI Disk plugin): tmp_header.bytesPerSector = 0 DEBUG (MAXI Disk plugin): tmp_header.sectorsPerTrack = 0 DEBUG (MAXI Disk plugin): tmp_header.unknown2 = 0 DEBUG (MAXI Disk plugin): tmp_header.unknown3 = 0 DEBUG (Format detection): Trying plugin Microsoft VHDX DEBUG (Format detection): Trying plugin Nero Burning ROM image Identifying image format... ⣷ DEBUG (Nero plugin): imageStream.Length = 26587136 DEBUG (Nero plugin): footerV1.ChunkID = 0x00000000 DEBUG (Nero plugin): footerV1.FirstChunkOffset = 0 DEBUG (Nero plugin): footerV2.ChunkID = 0x00000000 DEBUG (Nero plugin): footerV2.FirstChunkOffset = 0 DEBUG (Format detection): Trying plugin Parallels disk image DEBUG (Format detection): Trying plugin PartClone disk image DEBUG (Format detection): Trying plugin Partimage disk image DEBUG (Format detection): Trying plugin QEMU Copy-On-Write disk image DEBUG (Format detection): Trying plugin QEMU Copy-On-Write disk image v2 DEBUG (QCOW2 plugin): qHdr.magic = 0x00000000 DEBUG (QCOW2 plugin): qHdr.version = 0 DEBUG (Format detection): Trying plugin QEMU Enhanced Disk image DEBUG (Format detection): Trying plugin Ray Arachelian's Disk IMage DEBUG (Ray Arachelian's Disk IMage plugin): header.signature = DEBUG (Ray Arachelian's Disk IMage plugin): header.diskType = 0 DEBUG (Ray Arachelian's Disk IMage plugin): header.heads = 0 DEBUG (Ray Arachelian's Disk IMage plugin): header.cylinders = 0 DEBUG (Ray Arachelian's Disk IMage plugin): header.sectorsPerTrack = 0 DEBUG (Ray Arachelian's Disk IMage plugin): header.signature matches? = False DEBUG (Format detection): Trying plugin RS-IDE Hard Disk Image DEBUG (Format detection): Trying plugin Spectrum Floppy Disk Image DEBUG (Format detection): Trying plugin SuperCardPro DEBUG (Format detection): Trying plugin Sydex CopyQM DEBUG (Format detection): Trying plugin Sydex TeleDisk DEBUG (Format detection): Trying plugin T98 Hard Disk Image DEBUG (T98 plugin): cylinders = 0 DEBUG (Format detection): Trying plugin T98-Next NHD r0 Disk Image DEBUG (Format detection): Trying plugin Virtual PC DEBUG (Format detection): Trying plugin Virtual98 Disk Image DEBUG (Format detection): Trying plugin VirtualBox Disk Image DEBUG (Format detection): Trying plugin VMware disk image DEBUG (Format detection): Trying plugin Atari Lynx DEBUG (Format detection): Trying plugin iNES DEBUG (Format detection): Trying plugin Nintendo 64 DEBUG (Format detection): Trying plugin Nintendo Game Boy DEBUG (Format detection): Trying plugin Nintendo Game Boy Advance DEBUG (Format detection): Trying plugin Sega Game Gear / Master System DEBUG (Format detection): Trying plugin Sega Mega Drive / 32X / Pico Image format identified by Raw Disk Image. DEBUG (Extract-Files command): Correctly opened image file. DEBUG (Extract-Files command): Image without headers is 26587136 bytes. DEBUG (Extract-Files command): Image has 12982 sectors. DEBUG (Extract-Files command): Image identifies media type as CD. DEBUG (Apricot partitions plugin): label.version = "" DEBUG (Apricot partitions plugin): label.operatingSystem = 0 (Invalid) DEBUG (Apricot partitions plugin): label.writeProtected = False DEBUG (Apricot partitions plugin): label.copyProtected = False DEBUG (Apricot partitions plugin): label.bootType = 0 (Non-bootable) DEBUG (Apricot partitions plugin): label.partitionCount = 0 DEBUG (Apricot partitions plugin): label.winchester = False DEBUG (Apricot partitions plugin): label.sectorSize = 0 DEBUG (Apricot partitions plugin): label.spt = 0 DEBUG (Apricot partitions plugin): label.cylinders = 0 DEBUG (Apricot partitions plugin): label.heads = 0 DEBUG (Apricot partitions plugin): label.interleave = 0 DEBUG (Apricot partitions plugin): label.skew = 0 DEBUG (Apricot partitions plugin): label.bootLocation = 0 DEBUG (Apricot partitions plugin): label.bootSize = 0 DEBUG (Apricot partitions plugin): label.bootAddress = 0x00000000 DEBUG (Apricot partitions plugin): label.bootOffset:label.bootSegment = 0000:0000 DEBUG (Apricot partitions plugin): label.firstDataBlock = 0 DEBUG (Apricot partitions plugin): label.generation = 0 DEBUG (Apricot partitions plugin): label.copyCount = 0 DEBUG (Apricot partitions plugin): label.maxCopies = 0 DEBUG (Apricot partitions plugin): label.serialNumber = "" DEBUG (Apricot partitions plugin): label.partNumber = "" DEBUG (Apricot partitions plugin): label.copyright = "" DEBUG (Apricot partitions plugin): label.mainBPB.bps = 0 DEBUG (Apricot partitions plugin): label.mainBPB.spc = 0 DEBUG (Apricot partitions plugin): label.mainBPB.rsectors = 0 DEBUG (Apricot partitions plugin): label.mainBPB.fats_no = 0 DEBUG (Apricot partitions plugin): label.mainBPB.root_ent = 0 DEBUG (Apricot partitions plugin): label.mainBPB.sectors = 0 DEBUG (Apricot partitions plugin): label.mainBPB.media = 0 DEBUG (Apricot partitions plugin): label.mainBPB.spfat = 0 DEBUG (Apricot partitions plugin): label.mainBPB.diskType = 0 (MF1DD 70-track) DEBUG (Apricot partitions plugin): label.mainBPB.startSector = 0 DEBUG (Apricot partitions plugin): label.fontName = "" DEBUG (Apricot partitions plugin): label.keyboardName = "" DEBUG (Apricot partitions plugin): label.biosMajorVersion = 0 DEBUG (Apricot partitions plugin): label.biosMinorVersion = 0 DEBUG (Apricot partitions plugin): label.diagnosticsFlag = False DEBUG (Apricot partitions plugin): label.prnDevice = 0 (Parallel) DEBUG (Apricot partitions plugin): label.bellVolume = 0 DEBUG (Apricot partitions plugin): label.enableCache = False DEBUG (Apricot partitions plugin): label.enableGraphics = False DEBUG (Apricot partitions plugin): label.dosLength = 0 DEBUG (Apricot partitions plugin): label.fontLength = 0 DEBUG (Apricot partitions plugin): label.keyboardLength = 0 DEBUG (Apricot partitions plugin): label.dosStart = 0 DEBUG (Apricot partitions plugin): label.fontStart = 0 DEBUG (Apricot partitions plugin): label.keyboardStart = 0 DEBUG (Apricot partitions plugin): label.keyboardVolume = 0 DEBUG (Apricot partitions plugin): label.autorepeat = False DEBUG (Apricot partitions plugin): label.autorepeatLeadIn = 0 DEBUG (Apricot partitions plugin): label.autorepeatInterval = 0 DEBUG (Apricot partitions plugin): label.microscreenMode = 0 DEBUG (Apricot partitions plugin): label.spareKeyboard is null? = True DEBUG (Apricot partitions plugin): label.lineMode = 0 (256 lines) DEBUG (Apricot partitions plugin): label.lineWidth = 0 (80 columns) DEBUG (Apricot partitions plugin): label.imageOff = False DEBUG (Apricot partitions plugin): label.spareScreen is null? = True DEBUG (Apricot partitions plugin): label.txBaudRate = 0 (50 bps) DEBUG (Apricot partitions plugin): label.rxBaudRate = 0 (50 bps) DEBUG (Apricot partitions plugin): label.txBits = 0 DEBUG (Apricot partitions plugin): label.rxBits = 0 DEBUG (Apricot partitions plugin): label.stopBits = 0 (1 bits) DEBUG (Apricot partitions plugin): label.parityCheck = False DEBUG (Apricot partitions plugin): label.parityType = 0 (None) DEBUG (Apricot partitions plugin): label.txXonXoff = False DEBUG (Apricot partitions plugin): label.rxXonXoff = False DEBUG (Apricot partitions plugin): label.xonCharacter = 0 DEBUG (Apricot partitions plugin): label.xoffCharacter = 0 DEBUG (Apricot partitions plugin): label.rxXonXoffBuffer = 0 DEBUG (Apricot partitions plugin): label.dtrDsr = False DEBUG (Apricot partitions plugin): label.ctsRts = False DEBUG (Apricot partitions plugin): label.nullsAfterCr = 0 DEBUG (Apricot partitions plugin): label.nullsAfterFF = 0 DEBUG (Apricot partitions plugin): label.lfAfterCRSerial = False DEBUG (Apricot partitions plugin): label.biosErrorReportSerial = False DEBUG (Apricot partitions plugin): label.spareSerial is null? = True DEBUG (Apricot partitions plugin): label.lfAfterCrParallel = False DEBUG (Apricot partitions plugin): label.selectLine = False DEBUG (Apricot partitions plugin): label.paperEmpty = False DEBUG (Apricot partitions plugin): label.faultLine = False DEBUG (Apricot partitions plugin): label.biosErrorReportParallel = False DEBUG (Apricot partitions plugin): label.spareParallel is null? = True DEBUG (Apricot partitions plugin): label.spareWinchester is null? = True DEBUG (Apricot partitions plugin): label.parkingEnabled = False DEBUG (Apricot partitions plugin): label.formatProtection = False DEBUG (Apricot partitions plugin): label.spareRamDisk is null? = True Error reading file: Unbalanced markup stack. Did you forget to close a tag? System.InvalidOperationException: Unbalanced markup stack. Did you forget to close a tag? at Paragraph Spectre.Console.MarkupParser.Parse(string text, Style style) in /_/src/Spectre.Console/Internal/Text/Markup/MarkupParser.cs:55 at void Spectre.Console.AnsiConsoleExtensions.Markup(IAnsiConsole console, string value) in /_/src/Spectre.Console/Extensions/AnsiConsoleExtensions.Markup.cs:77 at void Spectre.Console.AnsiConsoleExtensions.Markup(IAnsiConsole console, IFormatProvider provider, string format, params object[] args) in /_/src/Spectre.Console/Extensions/AnsiConsoleExtensions.Markup.cs:47 at void Spectre.Console.AnsiConsoleExtensions.MarkupLine(IAnsiConsole console, IFormatProvider provider, string format, params object[] args) in /_/src/Spectre.Console/Extensions/AnsiConsoleExtensions.Markup.cs:129 at void Spectre.Console.AnsiConsoleExtensions.MarkupLine(IAnsiConsole console, string format, params object[] args) in /_/src/Spectre.Console/Extensions/AnsiConsoleExtensions.Markup.cs:88 at void Aaru.Commands.Filesystem.ExtractFilesCommand.<>c__DisplayClass3_1.<Invoke>b__2(string format, object[] objects) in /build/source/Aaru/Commands/Filesystem/ExtractFiles.cs:104 at void Aaru.Console.AaruConsole.DebugWriteLine(string module, string format, params object[] arg) in /build/source/Aaru.Console/AaruConsole.cs:188 at bool Aaru.Partitions.Apricot.GetInformation(IMediaImage imagePlugin, out List<Partition> partitions, ulong sectorOffset) in /build/source/Aaru.Partitions/Apricot.cs:300 at List<Partition> Aaru.Core.Partitions.GetAll(IMediaImage image) in /build/source/Aaru.Core/Partitions.cs:92 at void Aaru.Commands.Filesystem.ExtractFilesCommand.<>c__DisplayClass3_2.<Invoke>b__5(ProgressContext ctx) in /build/source/Aaru/Commands/Filesystem/ExtractFiles.cs:269 at Task Spectre.Console.Progress.<>c__DisplayClass29_0.<Start>b__0(ProgressContext ctx) in /_/src/Spectre.Console/Live/Progress/Progress.cs:70 at void Spectre.Console.Progress.<>c__DisplayClass31_0.<<StartAsync>b__0>d.MoveNext() in /_/src/Spectre.Console/Live/Progress/Progress.cs:103 at void Spectre.Console.Progress.<>c__DisplayClass32_0`1.<<StartAsync>b__0>d.MoveNext() in /_/src/Spectre.Console/Live/Progress/Progress.cs:138 at async Task<T> Spectre.Console.Internal.DefaultExclusivityMode.RunAsync<T>(Func<Task<T>> func) in /_/src/Spectre.Console/Internal/DefaultExclusivityMode.cs:40 at async Task<T> Spectre.Console.Progress.StartAsync<T>(Func<ProgressContext, Task<T>> action) in /_/src/Spectre.Console/Live/Progress/Progress.cs:121 at async Task Spectre.Console.Progress.StartAsync(Func<ProgressContext, Task> action) in /_/src/Spectre.Console/Live/Progress/Progress.cs:101 at void Spectre.Console.Progress.Start(Action<ProgressContext> action) in /_/src/Spectre.Console/Live/Progress/Progress.cs:74 at void Aaru.Core.Spectre.ProgressSingleSpinner(Action<ProgressContext> action) in /build/source/Aaru.Core/Spectre.cs:11 at int Aaru.Commands.Filesystem.ExtractFilesCommand.Invoke(bool debug, bool verbose, string encoding, bool xattrs, string imagePath, string namespace, string outputDir, string options) in /build/source/Aaru/Commands/Filesystem/ExtractFiles.cs:266 ``` ### Affected image Image tested: https://download.lenovo.com/pccbbs/mobiles/r11uj23wd.iso Other bootable ISOs listed on [Lenovo's webpage for BIOS/UEFI updates for the ThinkPad E595](https://pcsupport.lenovo.com/us/en/products/laptops-and-netbooks/thinkpad-edge-laptops/thinkpad-e595-type-20nf/downloads/ds539418-bios-update-utility-bootable-cd-for-windows-10-64-bit-thinkpad-e495-e595?category=BIOS%2FUEFI) also appear to suffer from this issue based on super quick testing.
claunia added the bugfilesystemdump image format labels 2026-01-29 15:38:26 +00:00
Author
Owner
@claunia commented on GitHub (Aug 11, 2025): FIU: https://openproject.claunia.com/projects/aaru/work_packages/542/activity
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: aaru-dps/Aaru-aaru-dps#1010