Hello Community,
i have a problem with disc bluray playback on my system. I´m on kodi 17.6, it´s running on an intel Kaby Lake G3930 with integrated graphics. For bluray playback i use a Panasonic UJ-265 device. My problem is when i start playing a disc it plays a few minutes and than kodi is crashing. When i restart the disc the same problem on the same place in the movie.
When is restart my computer with the disc inside the device and start playing again, the movie is playing without any problems. It´s only when i start the computer without a disc and insert the disc first when the computer is booted.
Here is a debug log.
Edit:
It seems the error comes from the udfread.c file and the function ssize_t udfread_file_read(UDFFILE *p, void *buf, size_t bytes). It is used by libbluray.
ssize_t udfread_file_read(UDFFILE *p, void *buf, size_t bytes)
{
uint8_t *bufpt = (uint8_t *)buf;
/* sanity checks */
if (!p || !buf || p->pos < 0) {
return -1;
}
if ((ssize_t)bytes < 0 || (int64_t)bytes < 0) {
return -1;
}
/* limit range to file size */
if ((uint64_t)p->pos + bytes > (uint64_t)udfread_file_size(p)) {
bytes = udfread_file_size(p) - p->pos;
}
/* small files may be stored inline in file entry */
if (p->fe->content_inline) {
memcpy(buf, &p->fe->data.content + p->pos, bytes);
p->pos += bytes;
return bytes;
}
/* allocate temp storage for input block */
if (!p->block) {
p->block_mem = malloc(2 * UDF_BLOCK_SIZE);
p->block = ALIGN(p->block_mem, UDF_BLOCK_SIZE);
}
/* read chunks */
while (bytes > 0) {
ssize_t r = _read(p, bufpt, bytes);
if (r < 0) {
if (bufpt != buf) {
/* got some bytes */
break;
}
/* got nothing */
return -1;
}
bufpt += r;
bytes -= r;
}
return (intptr_t)bufpt - (intptr_t)buf;
}
Display More
It returns a -1. As we can see in the debug log.