Hi,
apparently something is happening inside or aoround isoburn_prepare_new_image()
Yes. Despite their harmless names, the calls isoburn_prepare_disc() and
isoburn_prepare_new_image() start a thread which lets libisofs begin
to produce the ISO image stream.
This obviously fails early. Probably in the first pass which computes the
positions of the various entities inside the ISO.
The behavior seen so far, in my experience usually derive from some
unititalized variable/pointer.
valgrind would find such a thing if it was encountered in my tests.
We need the stack trace of the crash.
If you want to go on with inserting prints, then you should skip the
libisoburn layer and begin to mark code spots in libisofs.
The big boss in libisofs writing is
libisofs/ecma119.c : ecma119_image_new()
It runs in the thread of xorriso and near its end starts the libisofs
writer thread.
It controls the creation of the HFS+ writer objects:
Code: Select all
ret = hfsplus_writer_create(target);
ret = hfsplus_tail_writer_create(target);
These functions are implemented in
libisofs/hfsplus.c
You should put fprintf(stderr)s into them to see whether they are reached and
completely executed.
When all writers are created ecma119_image_new() runs the first pass by
calling their .compute_data_blocks() methods.
Those of HFS+ are in libisofs/hfsplus.c:
Code: Select all
hfsplus_writer_compute_data_blocks()
will print DEBUG messages if xorriso command
-report_about all
is given before
-as mkisofs
or after the "--" at the end of the arguments.
A problem might be that these messages go through a message queue and
might get lost unprinted when the process crashes.
Code: Select all
hfsplus_tail_writer_compute_data_blocks()
will print start and end messages if macro Libisofs_ts_debuG is defined.
These too go through the message queue.
So you will probably be best off with own fprintf(stderr, ...).
If we are still running after all .compute_data_blocks() methods were
called, the libisofs writer thread is started with write_function() as
executable payload.
It calls via write_head_part*() the HFS+ writer methods .write_vol_desc()
which are both the same and not very suspicious:
just returns 1.
Then it calls the .write_data() methods:
writes the HFS+ superblock and tree. (That's were the aligment
warnings come from.)
After the successful end of hfsplus_writer_write_data() would come the
UPDATE messages about written percentage of data.
So i assume that its end is not successful.
writes HFS+ metadata after the data file content.
Finally via ecma119_image_free() it calls:
cleans up memory allocations.
just returns 1.
Have a nice day
Thomas