Opened 9 years ago

Last modified 8 weeks ago

#7502 assigned bug

[kernel] implement user Local Descriptor Table

Reported by: diver Owned by: nobody
Priority: normal Milestone: R1
Component: System/Kernel Version: R1/Development
Keywords: kernel crash matroska LDT wine Cc: diger
Blocked By: Blocking: #7585
Platform: All


This is hrev41440, gcc4hybrid.

Kernel crashes a second later after running mplayer Dom.u.ozera.2006.VC-1.HDDVDRemux.1080p.mkv (11,6 GB)
After that Haiku stops responding to ping requests.
mplayer with all needed libs.

Attachments (1)

IMG_0729.JPG (753.1 KB ) - added by diver 9 years ago.

Download all attachments as: .zip

Change History (17)

by diver, 9 years ago

Attachment: IMG_0729.JPG added

comment:1 by bonefish, 9 years ago

The stack trace looks curious (like a regular userland page fault). This is reproducible? Is it a recent regression? If so, can you tell when it still worked?

comment:2 by diver, 9 years ago

It was reproducible since at least 2010/08/17. I don't know weather it worked before.

Version 1, edited 9 years ago by diver (previous) (next) (diff)

comment:3 by diver, 9 years ago

Also interesting is that if I force another codec haiku doesn't crash
mplayer -vc ffvc1 Dom.u.ozera.2006.VC-1.HDDVDRemux.1080p.mkv

comment:4 by diver, 9 years ago

[mkv] Track ID 1: video (V_MS/VFW/FOURCC), -vid 0
[mkv] Track ID 2: audio (A_AC3) "AC3 5.1 384 kbps Dubl", -aid 0, -alang rus
[mkv] Track ID 3: audio (A_AC3) "AC3 at 448 kbps DVO", -aid 1, -alang rus
[mkv] Track ID 4: audio (A_DTS) "DTS at 768 kbps MVO", -aid 2, -alang rus
[mkv] Track ID 5: audio (A_AC3) "AC3 5.1 640 kbps", -aid 3, -alang eng
[mkv] Track ID 6: audio (A_AC3) "AC3 2.0 192 kbps", -aid 4, -alang eng
[mkv] Track ID 7: subtitles (S_TEXT/UTF8), -sid 0, -slang rus
[mkv] Track ID 8: subtitles (S_TEXT/UTF8), -sid 1, -slang eng
[mkv] Will play video track 1.
Matroska file format detected.
VIDEO:  [WVC1]  1920x1080  0bpp  23.976 fps    0.0 kbps ( 0.0 kbyte/s)
open: No such file or directory
[MGA] Couldn't open: /dev/mga_vid
open: No such file or directory
[MGA] Couldn't open: /dev/mga_vid
[VO_TDFXFB] Can't open /dev/fb0: Permission denied.
[VO_3DFX] Unable to open /dev/3dfx.
[vdpau] Error when calling vdp_device_create_x11: 1
Opening video decoder: [dmo] DMO video codecs
Win32 LoadLibrary failed to load: /usr/lib/codecs/wvc1dmod.dll
IMediaObject ERROR: 0x83fd101  could not open DMO DLL (0x0 : 0)
Failed to create DMO filter
ERROR: Could not open required DirectShow codec wvc1dmod.dll.
You need to upgrade/install the binary codecs package.
Go to
VDecoder init failed :(
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [ffvc1] vfm: ffmpeg (FFmpeg WVC1)
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
AUDIO: 48000 Hz, 2 ch, s16le, 384.0 kbit/25.00% (ratio: 48000->192000)
Selected audio codec: [ffac3] afm: ffmpeg (FFmpeg AC-3)

comment:5 by bonefish, 9 years ago

Blocking: 7585 added

(In #7585) Closing as a duplicate of #7502.

comment:6 by bonefish, 9 years ago

Very curious. It looks like a crash in mplayer that is wrongly categorized as a kernel crash. I significantly changed the thread and team locking in hrev42116. Please retest with that or a newer revision.

comment:7 by diver, 9 years ago

Still KDLs with the exact same back trace in hrev42120.

comment:8 by diver, 9 years ago

Summary: [kernel] panics upon opening 11Gb matroska file in mplayer[kernel] panics upon opening matroska file in mplayer

I've split that video using this command in linux:

mkvmerge Dom.u.ozera.2006.VC-1.HDDVDRemux.1080p.mkv -o output.mkv --split timecodes:00:00:00,00:1:00 --split-max-files 3

One of the resulting file is 100mb in size still causes the same KDL in hrev42870.
So most likely it is not related to file size.

comment:9 by diver, 9 years ago

I think that what happens is that for this particular file format mplayer tries to use win32 codec wvc1dmod.dll and tries to load it from some directory which doesn't exist. Whereas when using -vc ffvc1 argument mplayer uses built-in codec and this crash doesn't happen.
#7585 describes the same thing when invoking mplayer with some invalid path crashes kernel the same way.

comment:10 by mmlr, 9 years ago

Since it crashes in Setup_LDT_Keeper() where it tries to set up a user LDT, it is quite possible that it messes with something we neither disallow nor support. Changing the decoder will likely cause it not to use that particular setup. In any case we either need to disable support for setting user LDTs if they cause such problems or, better, support them properly.

comment:11 by diver, 9 years ago

Just For Reference: libmpcodecs uses Setup_LDT_Keeper() from ldt_keeper.c.

comment:12 by diver, 9 years ago

Cc: diger added

comment:13 by diver, 8 years ago

Keywords: LDT added
Summary: [kernel] panics upon opening matroska file in mplayer[kernel] implement user Local Descriptor Table

comment:14 by AndreH, 8 years ago

Keywords: wine added

I have tricked Wine to run far enough to tell me it misses LDT support on Haiku. Code is at libs/wine/ldt.c internal_set_entry Seems to be the same bug.

comment:15 by axeld, 3 years ago

Owner: changed from axeld to nobody
Status: newassigned

comment:16 by X512, 8 weeks ago

Both 32 and 64 bit Wine versions requires LDT support. NtCurrentTeb (returns TIB that is used for thread specific data) use FS register for 32 bits and GS register for 64 bits. Code is inlined so changing storage method is not possible. I tried to build 64 bit Wine by stubbing LDT code and it crashes at start.

Note: See TracTickets for help on using tickets.