Opened 18 years ago
Closed 18 years ago
#529 closed defect (fixed)
quickdnr filter causes "illegal instruction" with pentium 3
Reported by: | Owned by: | Isaac Richards | |
---|---|---|---|
Priority: | minor | Milestone: | 0.19 |
Component: | mythtv | Version: | head |
Severity: | medium | Keywords: | |
Cc: | Ticket locked: | no |
Description
Hello!
I'm trying to use the "quickdnr" filter. When I enter LiveTv? or when I want to watch a recording, mythfrontend dies and gives me an "illegal instruction" error.
From what I understand by looking at the docs and reading the source, it is important that my CPU supports SSE or MMX. This is a Pentium 3 with 450mhz and /proc/cpuinfo tells me that it supports both. I've tried a few things like compiling MythTV with --march=i686 or --march=pentium3, but it happens all the time.
I'm quite sure that filter_quickdnr.c gets compiled properly (with MMX, I mean) because an "#warning HELLO!" yields the expected result when put in the "#ifdev MMX" section.
I don't know if this is just a problem with my setup, maybe it's related to some hardware brokenness. If this is the case, please disregard this ticket. Otherwise, I'll be very happy to provide additional information when necessary and test patches.
Regards, Michael "laga" Haas
Attachments (1)
Change History (7)
comment:1 Changed 18 years ago by
Resolution: | → invalid |
---|---|
Status: | new → closed |
comment:2 Changed 18 years ago by
Could this be related to http://www.gossamer-threads.com/lists/mythtv/users/156230#156230 ? It still hasn't been fixed in SVN (of course, it hasn't officially been put into Trac, either. :)
comment:3 Changed 18 years ago by
Resolution: | invalid |
---|---|
Status: | closed → reopened |
Hi again.
The problem still exists.
Let me summarize again, I'm afraid I've confused everyone.
When I run ./configure with --arch=pentium3, quickdnr will cause an illegal instruction when used as a playback filter.
When I run ./configure with --arch=i686, everything will just work fine.
Now the goal would be to make quickdnr work with --arch=pentium3, IMHO - because the CPU supports SSE and MMX, there shouldn't be a problem.
I'm going to see what http://www.gossamer-threads.com/lists/mythtv/users/156230#156230 can do for me.
comment:4 Changed 18 years ago by
Milestone: | → 0.19 |
---|
Can you get the backtrace on the bad instruction?
It would also be useful to see the assembler output of the file that is giving you problems. You can get this by using the same gcc line that make does except add "-S" to it and get rid of "-o objectfilename.o" It will then output a "sourcefilename.s" file which contains the assembler output. You need the backtrace first to find the file...
Changed 18 years ago by
Attachment: | filter_quickdnr.s added |
---|
comment:5 Changed 18 years ago by
Hello!
Here is the backtrace you've requested. I hope it is ok to post it inline and not as an attachment.
I've created this backtrace with libmpeg2 as video output method (sic ;)) and without deinterlacing, just quickdnr in my filter chain.
Thread 9 (Thread 1225358256 (LWP 1576)): #0 0x451bbf6e in quickdnr2MMX (f=0x86f1638, frame=0x8bf6108) at filter_quickdnr.c:244 tf = (ThisFilter *) 0x86f1638 y = 1225357112 buf = (uint64_t *) 0x471e2000 av_p = (uint64_t *) 0x8a30dc0 sign_convert = 9259542123273814144 #1 0x402e8e28 in FilterChain::ProcessFrame (this=0x850f268, Frame=0x8bf6108) at filtermanager.cpp:48 VF = (VideoFilter *) 0x86f1638 #2 0x404aed29 in VideoOutputXv::ProcessFrameMem (this=0x870bc78, frame=0x8bf6108, osd=0x87208b0, filterList=0x850f268, pipPlayer=0x0) at videoout_xv.cpp:2754 deint_proc = false pauseframe = false #3 0x404af0f6 in VideoOutputXv::ProcessFrame (this=0x870bc78, frame=0x8bf6108, osd=0x87208b0, filterList=0x850f268, pipPlayer=0x0) at videoout_xv.cpp:2785 No locals. #4 0x403f43d6 in NuppelVideoPlayer::DisplayNormalFrame (this=0x8216ac0) at NuppelVideoPlayer.cpp:1642 frame = (VideoFrame *) 0x8bf6108 #5 0x403f48cd in NuppelVideoPlayer::OutputVideoLoop (this=0x8216ac0) at NuppelVideoPlayer.cpp:1721 temp_speed = 1 fr_int = 40000 #6 0x403f4b3c in NuppelVideoPlayer::kickoffOutputVideoLoop (player=0x8216ac0) at NuppelVideoPlayer.cpp:1786 nvp = (NuppelVideoPlayer *) 0x8216ac0 #7 0x41b9fb63 in start_thread () from /lib/tls/libpthread.so.0 No symbol table info available. #8 0x4189e18a in clone () from /lib/tls/libc.so.6 No symbol table info available. Thread 8 (Thread 1190353840 (LWP 1575)): #0 0x4186f99c in nanosleep () from /lib/tls/libc.so.6 No symbol table info available. #1 0x4189828a in usleep () from /lib/tls/libc.so.6 No symbol table info available. #2 0x40da87c0 in AudioOutputBase::OutputAudioLoop (this=0x465da008) at audiooutputbase.cpp:772 space_on_soundcard = 2768 last_space_on_soundcard = 2768 zeros = "\000" fragment = "Jü" e = {<QCustomEvent> = {<> = {<No data fields>}, d = 0x0}, error_msg = 0x0, elasped_seconds = 0, written_bytes = 0, brate = 0, freq = 0, prec = 0, chan = 0} #3 0x40da9251 in AudioOutputBase::kickoffOutputAudioLoop (player=0x465da008) at audiooutputbase.cpp:865 No locals. #4 0x41b9fb63 in start_thread () from /lib/tls/libpthread.so.0 No symbol table info available. #5 0x4189e18a in clone () from /lib/tls/libc.so.6 No symbol table info available. Thread 7 (Thread 1176230832 (LWP 1574)): #0 0x4186f99c in nanosleep () from /lib/tls/libc.so.6 No symbol table info available. #1 0x4189828a in usleep () from /lib/tls/libc.so.6 No symbol table info available. #2 0x402aa46f in RingBuffer::ReadAheadThread (this=0x86bda08) at RingBuffer.cpp:971 totfree = 45055 ret = 128000 used = 2547713 loops = 3 #3 0x402aa331 in RingBuffer::startReader (type=0x86bda08) at RingBuffer.cpp:937 rbuffer = (RingBuffer *) 0x86bda08 #4 0x41b9fb63 in start_thread () from /lib/tls/libpthread.so.0 No symbol table info available. #5 0x4189e18a in clone () from /lib/tls/libc.so.6 No symbol table info available. Thread 6 (Thread 1167842224 (LWP 1573)): #0 get_non_intra_block (decoder=0x89c6a40, quant_matrix=0x89c81f4) at slice.c:593 i = 0 j = 0 val = -288 scan = (const uint8_t * const) 0x407aec20 "" mismatch = 287 tab = (const DCTtab *) 0x406c3448 bit_buf = 2703559680 bits = -8 bit_ptr = ( const uint8_t *) 0x464af0c0 "\2222¡\217F\202è\001J\032\"-\233" dest = (int16_t * const) 0x89c6b40 #1 0x4064c063 in slice_non_intra_DCT (decoder=0x89c6a40, cc=0, dest=0x4773d178 "bbbcba``", stride=1280) at slice.c:969 last = 144468544 #2 0x4064b50d in mpeg2_slice (decoder=0x89c6a40, code=7, buffer=0x464af040 "R\025]θ7Cb÷¡6ÄD\004ÄíT*ãÁz\236©¥ê@º\006I»]L\026aH6\030Ó\005øq&5Q\206*(ýF\tÂ\214 u}pÂ3]WoÁz\237P\233G\003Á\022Û\031B¬\022\bÖÔ*Ц\035Àlº\023`\027¢P¾\021'K¡&Ê\206$\016[\035S*;&7m\233Y5\nã\vêE\037¬¤*ÆÅ/¡%\f\2222¡\217F\202è\001J\032\"-\233") at slice.c:1896 offset = 368 dest_y = (uint8_t *) 0x4773d170 "ihgfdbbcbbbcba``" coded_block_pattern = 2 DCT_offset = 640 DCT_stride = 1280 parser = (motion_parser_t *) 0x40643a42 <motion_fr_frame_420> macroblock_modes = 182 mba_inc = 0 mba = (const MBAtab *) 0x406c379c cpu_state = {dummy = 154806076} #3 0x40641409 in mpeg2_parse (mpeg2dec=0x89c6a40) at decode.c:188 size_buffer = 6821 size_chunk = 1222656 copied = 253 #4 0x40415a3a in AvFormatDecoderPrivate::DecodeMPEG2Video (this=0x8599740, avctx=0x86f9cc0, picture=0x459bd5c0, got_picture_ptr=0x459bd588, buf=0x93a0630 "", buf_size=8460) at avformatdecoder.cpp:97 info = (const mpeg2_info_t *) 0x89cac40 #5 0x40423a5a in AvFormatDecoder::GetFrame (this=0x86be400, onlyvideo=0) at avformatdecoder.cpp:2035 context = (AVCodecContext *) 0x86f9cc0 mpa_pic = {data = { 0x4772e000 "\037\035\024\033\0325\207ÀÆÇÈÉËÌÎÎÑÒÓÒÒÑÑÒÒÒÓÓÓÓÒÐÖÕÓÓÔÔÑÑÓÕÖ×ÖÕÕÖÖÖ×ÙÚ×ØØÖÖ××ØÛÖ××Ö×ÙÙÙÚÚÚÚÜÝÜÛÛÛÕÚÚÛÜÜÝÞÞÝÝÝÝÝÝÝÜÜÞÝÝÞÞÞàßßßÞÞÞÜßààááââãàÞßáâááàááááááààáááááâáàÞÞßßßßßáààßßÞÞÝàÝÝÝÝÞààááàßááââãßßàààààààâääääääâäääääää"..., 0x47779000 "|\177\203\210\214\220\221\222\225\225\225\225\225\225\225\225\220\220\220\220\217\216\216\216\224\224\223\223\222\222\221\220\215\216\216\216\216\216\216\216\221\220\220\220\220\220\220\220\215\215\215\215\215\215\215\215\216\216\216\216\215\215\215\215\215\215\215\215\215\215\216\216\217\216\216\216\217\217\216\215\215\215\215\215\215\216\217\217\212\213\214\214\215", '\210' <repeats 15 times>, "\207\207\207\207\211\210\207\206\205\204\203\200\201\201\201\201\201\201\201\201\201\200\200\200\177\200\200\201\200\201\201\202\202\203\203\204\203\203\203\203\203\203\204\204\203\204\204\204\204\204\204\204\203\202\203\203\202\200}{{qpmjiiifeeeeeeejkkjjiiigggggggg"..., 0x4778bc00 "\200\177}{xusrrrrrrrrsrrrrsssstttttttssttttttttsssssssttttttttsssstttttttttt", 's' <repeats 15 times>, "tuuttttt", 'v' <repeats 15 times>, "uuuutuuvvwwy||||||{{yyy{|{{{z", 'y' <repeats 23 times>, "z|}\177\203\207\214\217\217\223\226\231\234\236 \237\237\236\236\235\235\234\234\234\234\234\234\234\234\233\233\233\233\233\233\233\233"..., 0x0}, linesize = {640, 320, 320, 0}, base = {0x0, 0x0, 0x0, 0x0}, key_frame = 0, pict_type = 0, pts = 0, coded_picture_number = 0, display_picture_number = 0, quality = 0, age = 1073741824, reference = 0, qscale_table = 0x0, qstride = 0, mbskip_table = 0x0, motion_val = {0x0, 0x0}, mb_type = 0x0, motion_subsample_log2 = 0 '\0', opaque = 0x8bf6468, error = {0, 0, 0, 0}, type = 2, repeat_pict = 0, qscale_type = 0, interlaced_frame = 0, top_field_first = 0, pan_scan = 0x0, palette_has_changed = 0, buffer_hints = 0, dct_coeff = 0x0, ref_index = {0x0, 0x0}} gotpicture = 0 temppts = 608194102105533884 picframe = (VideoFrame *) 0x8bf6348 ctype = 0 curstream = (AVStream *) 0x8769240 pkt = (AVPacket *) 0x93719e0 ret = 0 ptr = (unsigned char *) 0x93a0630 "" firstloop = true have_err = false storevideoframes = false len = 8460 data_size = 0 pts = 479 allowedquit = false skipaudio = false #6 0x403ef501 in NuppelVideoPlayer::GetFrame (this=0x8216ac0, onlyvideo=0, unsafe=false) at NuppelVideoPlayer.cpp:851 No locals. #7 0x403f625f in NuppelVideoPlayer::StartPlaying (this=0x8216ac0) at NuppelVideoPlayer.cpp:2103 output_video = 1225358256 decoder_thread = 1167842224 pausecheck = 0 #8 0x403ae94d in SpawnDecode (param=0x8216ac0) at tv_play.cpp:163 nvp = (NuppelVideoPlayer *) 0x8216ac0 #9 0x41b9fb63 in start_thread () from /lib/tls/libpthread.so.0 No symbol table info available. #10 0x4189e18a in clone () from /lib/tls/libc.so.6 No symbol table info available. Thread 5 (Thread 1150049200 (LWP 1572)): #0 0x4186f99c in nanosleep () from /lib/tls/libc.so.6 No symbol table info available. #1 0x4189828a in usleep () from /lib/tls/libc.so.6 No symbol table info available. #2 0x403bbed7 in TV::RunTV (this=0x86bdb20) at tv_play.cpp:1348 doHandle = false keypressed = (QKeyEvent *) 0x448c5ae4 updatecheck = 3 #3 0x403bb93f in TV::EventThread (param=0x86bdb20) at tv_play.cpp:1280 thetv = (class TV *) 0x86bdb20 #4 0x41b9fb63 in start_thread () from /lib/tls/libpthread.so.0 No symbol table info available. #5 0x4189e18a in clone () from /lib/tls/libc.so.6 No symbol table info available. Thread 4 (Thread 1158437808 (LWP 1571)): #0 0x41897a27 in select () from /lib/tls/libc.so.6 No symbol table info available. #1 0x40ddf0a4 in JoystickMenuClient::Process (this=0x8437248) at jsmenu.cpp:217 rc = 8 readfds = {fds_bits = {4096, 0 <repeats 31 times>}} js = {time = 1378932, value = 0, type = 130 '\202', number = 1 '\001'} #2 0x40d593e6 in SpawnJoystickMenu (param=0x83bd4e8) at mythdialogs.cpp:66 main_window = (MythMainWindow *) 0x83bd4e8 config_file = {static null = { static null = <same as static member of an already seen type>, d = 0x8176388, static shared_null = 0x8176388}, d = 0x8437100, static shared_null = 0x8176388} js = (class JoystickMenuClient *) 0x8437248 #3 0x41b9fb63 in start_thread () from /lib/tls/libpthread.so.0 No symbol table info available. #4 0x4189e18a in clone () from /lib/tls/libc.so.6 No symbol table info available. Thread 2 (Thread 1125669808 (LWP 1569)): #0 0x41ba2295 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/tls/libpthread.so.0 No symbol table info available. #1 0x42603db9 in QWaitCondition::wait () from /usr/lib/libqt-mt.so.3 No symbol table info available. #2 0x40c99337 in MythContext::waitPrivRequest (this=0x81a3c78) at mythcontext.cpp:2514 No locals. #3 0x08073051 in run_priv_thread (data=0x0) at main.cpp:698 No locals. #4 0x41b9fb63 in start_thread () from /lib/tls/libpthread.so.0 No symbol table info available. #5 0x4189e18a in clone () from /lib/tls/libc.so.6 No symbol table info available. Thread 1 (Thread 1089181984 (LWP 1564)): #0 0x4186f99c in nanosleep () from /lib/tls/libc.so.6 No symbol table info available. #1 0x4189828a in usleep () from /lib/tls/libc.so.6 No symbol table info available. #2 0x08090f69 in PlaybackBox::play (this=0xbfffe9a0, rec=0x859a178, inPlaylist=false) at playbackbox.cpp:1861 playCompleted = false tv = (class TV *) 0x86bdb20 tvrec = (ProgramInfo *) 0x870a330 doremove = 65 doprompt = 143 #3 0x0808ff16 in PlaybackBox::playSelected (this=0xbfffe9a0) at playbackbox.cpp:1642 No locals. #4 0x080902b7 in PlaybackBox::selected (this=0xbfffe9a0) at playbackbox.cpp:1740 No locals. #5 0x0809a362 in PlaybackBox::keyPressEvent (this=0xbfffe9a0, e=0xbfffe510) at playbackbox.cpp:3194 action = {static null = { static null = <same as static member of an already seen type>, d = 0x8176388, static shared_null = 0x8176388}, d = 0x8436ef8, static shared_null = 0x8176388} i = 0 handled = true actions = {<QValueList<QString>> = {sh = 0x82181b8}, <No data fields>} #6 0x4239d405 in QWidget::event () from /usr/lib/libqt-mt.so.3 No symbol table info available. #7 0x4230a69f in QApplication::internalNotify () from /usr/lib/libqt-mt.so.3 No symbol table info available. #8 0x4230a194 in QApplication::notify () from /usr/lib/libqt-mt.so.3 No symbol table info available. #9 0x422a0ea0 in QETWidget::translateKeyEvent () from /usr/lib/libqt-mt.so.3 No symbol table info available. #10 0x4229cb82 in QApplication::x11ProcessEvent () from /usr/lib/libqt-mt.so.3 No symbol table info available. #11 0x422b3ad4 in QEventLoop::processEvents () from /usr/lib/libqt-mt.so.3 No symbol table info available. #12 0x4231ca58 in QEventLoop::enterLoop () from /usr/lib/libqt-mt.so.3 No symbol table info available. #13 0x4230a951 in QApplication::enter_loop () from /usr/lib/libqt-mt.so.3 No symbol table info available. #14 0x40d63913 in MythDialog::exec (this=0xbfffe9a0) at mythdialogs.cpp:1042 res = 32157864 #15 0x0806fb44 in startPlayback () at main.cpp:191 pbb = {<MythDialog> = {<> = {<No data fields>}, static metaObj = 0x83f55e0, wmult = 1.60000002, hmult = 1.60000002, screenwidth = 1280, screenheight = 960, xbase = 0, ybase = 0, m_parent = 0x83bd4e8, rescode = 0, in_loop = true, defaultBigFont = { d = 0x857a620}, defaultMediumFont = {d = 0x86ca3f8}, defaultSmallFont = { d = 0x83c9240}}, static metaObj = 0x8722088, backup = {<Qt> = { static color0 = @0x427da800, static color1 = @0x427da808, static black = @0x427da810, static white = @0x427da818, static darkGray = @0x427da820, static gray = @0x427da828, static lightGray = @0x427da830, static red = @0x427da838, static green = @0x427da840, static blue = @0x427da848, static cyan = @0x427da850, static magenta = @0x427da858, static yellow = @0x427da860, static darkRed = @0x427da868, static darkGreen = @0x427da870, static darkBlue = @0x427da878, static darkCyan = @0x427da880, static darkMagenta = @0x427da888, static darkYellow = @0x427da890, static arrowCursor = @0x427d8ee0, static upArrowCursor = @0x427d8ee4, static crossCursor = @0x427d8ee8, static waitCursor = @0x427d8eec, static ibeamCursor = @0x427d8ef0, static sizeVerCursor = @0x427d8ef4, static sizeHorCursor = @0x427d8ef8, static sizeBDiagCursor = @0x427d8efc, static sizeFDiagCursor = @0x427d8f00, static sizeAllCursor = @0x427d8f04, static blankCursor = @0x427d8f08, static splitVCursor = @0x427d8f0c, static splitHCursor = @0x427d8f10, static pointingHandCursor = @0x427d8f14, static forbiddenCursor = @0x427d8f18, static whatsThisCursor = @0x427d8f1c, static busyCursor = @0x427d8f20}, flags = 4, d = 0x0, pdev = 0x0, bg_col = {static color_init = true, static globals_init = true, static colormodel = QColor::d32, d = { argb = 4294967295, d8 = {argb = 4294967295, pix = 84 'T', invalid = 82 'R', dirty = 73 'I', direct = 68 'D'}, d32 = { argb = 4294967295, pix = 1145655892}}}, bg_mode = 0 '\0', rop = 0 '\0', pu = 255 'ÿ', bro = {xp = 0, yp = 0}, cfont = { d = 0x819e1b0}, pfont = 0x0, cpen = {<Qt> = { static color0 = @0x427da800, static color1 = @0x427da808, static black = @0x427da810, static white = @0x427da818, static darkGray = @0x427da820, static gray = @0x427da828, static lightGray = @0x427da830, static red = @0x427da838, static green = @0x427da840, static blue = @0x427da848, static cyan = @0x427da850, static magenta = @0x427da858, static yellow = @0x427da860, static darkRed = @0x427da868, static darkGreen = @0x427da870, static darkBlue = @0x427da878, static darkCyan = @0x427da880, static darkMagenta = @0x427da888, static darkYellow = @0x427da890, static arrowCursor = @0x427d8ee0, static upArrowCursor = @0x427d8ee4, static crossCursor = @0x427d8ee8, static waitCursor = @0x427d8eec, static ibeamCursor = @0x427d8ef0, static sizeVerCursor = @0x427d8ef4, static sizeHorCursor = @0x427d8ef8, static sizeFDiagCursor = @0x427d8f00, static sizeAllCursor = @0x427d8f04, static blankCursor = @0x427d8f08, static splitVCursor = @0x427d8f0c, static splitHCursor = @0x427d8f10, static pointingHandCursor = @0x427d8f14, static forbiddenCursor = @0x427d8f18, static whatsThisCursor = @0x427d8f1c, static busyCursor = @0x427d8f20}, data = 0x818dd18}, crgn = { data = 0x84368e0}, tabstops = 0, tabarray = 0x0, tabarraylen = 0, block_ext = false, wx = 1099140644, wy = 1115483580, ww = -1073746880, wh = 1, vx = 72, vy = 1086831658, vw = 1099139140, vh = 0, wxmat = { _m11 = 1, _m12 = 0, _m21 = 0, _m22 = 1, _dx = 0, _dy = 0}, xmat = { _m11 = 1, _m12 = 0, _m21 = 0, _m22 = 1, _dx = 0, _dy = 0}, ixmat = { _m11 = 1, _m12 = 0, _m21 = 0, _m22 = 1, _dx = 0, _dy = 0}, txop = 0, txinv = false, penRef = 0x0, brushRef = 0x0, ps_stack = 0x0, wm_stack = 0x0, dpy = 0x0, scrn = 1089122472, hd = 1099140644, rendhd = 1087225507, gc = 0x0, gc_brush = 0x0, curPt = {xp = 0, yp = 0}, clip_serial = 0}, haveGroupInfoSet = false, skipUpdate = true, pageDowner = false, connected = true, curitem = 0x859a178, delitem = 0x0, lastProgram = 0x0, theme = 0x81a44d8, xmldata = <incomplete type>, skipCnt = 0, inTitle = false, playingVideo = false, leftRight = false, titleIndex = 0, progIndex = 0, titleList = {<QValueList<QString>> = { sh = 0x85a5730}, <No data fields>}, playList = {<QValueList<QString>> = { sh = 0x8437a60}, <No data fields>}, progLists = {sh = 0x83d41d8}, type = PlaybackBox::Play, arrowAccel = true, timer = 0x86bec18, nvp = 0x0, rbuffer = 0x0, decoder = 3221220416, state = PlaybackBox::kKilling, killState = PlaybackBox::kDone, killTimeout = {m_timer = {ds = 0}}, nvpTimeout = {m_timer = {ds = 0}}, waitToStartPreviewTimer = {m_timer = { ds = 77586836}}, waitToStart = true, lastUpdateTime = {d = { jd = 2453673}, t = {ds = 77571151}}, graphicPopup = true, playbackPreview = false, generatePreviewPixmap = false, dateformat = { static null = { static null = <same as static member of an already seen type>, d = 0x8176388, static shared_null = 0x8176388}, d = 0x870e428, static shared_null = 0x8176388}, timeformat = {static null = { static null = <same as static member of an already seen type>, d = 0x8176388, static shared_null = 0x8176388}, d = 0x86cdce8, static shared_null = 0x8176388}, showDateFormat = {static null = { static null = <same as static member of an already seen type>, d = 0x8176388, static shared_null = 0x8176388}, d = 0x8599700, static shared_null = 0x8176388}, showTimeFormat = {static null = { static null = <same as static member of an already seen type>, d = 0x8176388, static shared_null = 0x8176388}, d = 0x86f3528, static shared_null = 0x8176388}, popup = 0x0, myBackground = <incomplete type>, containerPixmap = 0x418f8840, fillerPixmap = 0x14, bgTransBackup = 0x83f5e68, fullRect = {x1 = 0, y1 = 0, x2 = 1279, y2 = 959}, listRect = {x1 = 0, y1 = 80, x2 = 1279, y2 = 575}, infoRect = {x1 = 0, y1 = 576, x2 = 1279, y2 = 959}, groupRect = {x1 = 0, y1 = 576, x2 = 1277, y2 = 959}, usageRect = {x1 = 0, y1 = 888, x2 = 1279, y2 = 951}, videoRect = {x1 = 992, y1 = 576, x2 = 1247, y2 = 767}, curGroupRect = {x1 = 0, y1 = 0, x2 = -1, y2 = -1}, listsize = 7, popupForeground = {static color_init = true, static globals_init = true, static colormodel = QColor::d32, d = {argb = 4294967295, d8 = { argb = 4294967295, pix = 84 'T', invalid = 82 'R', dirty = 73 'I', direct = 68 'D'}, d32 = {argb = 4294967295, pix = 1145655892}}}, popupBackground = {static color_init = true, static globals_init = true, static colormodel = QColor::d32, d = {argb = 1224736768, d8 = { argb = 1224736768, pix = 84 'T', invalid = 82 'R', dirty = 73 'I', direct = 68 'D'}, d32 = {argb = 1224736768, pix = 1145655892}}}, popupHighlight = {static color_init = true, static globals_init = true, static colormodel = QColor::d32, d = {argb = 4294967295, d8 = { argb = 4294967295, pix = 84 'T', invalid = 82 'R', dirty = 73 'I', direct = 68 'D'}, d32 = {argb = 4294967295, pix = 1145655892}}}, expectingPopup = false, updateFreeSpace = true, freeSpaceTimer = 0x86ed1c0, freeSpaceTotal = 0, freeSpaceUsed = 0, groupDisplayName = {static null = { static null = <same as static member of an already seen type>, d = 0x8176388, static shared_null = 0x8176388}, d = 0x8593088, static shared_null = 0x8176388}, recGroup = {static null = { static null = <same as static member of an already seen type>, d = 0x8176388, static shared_null = 0x8176388}, d = 0x83c02a8, static shared_null = 0x8176388}, recGroupPassword = {static null = { static null = <same as static member of an already seen type>, d = 0x8176388, static shared_null = 0x8176388}, d = 0x858fab0, static shared_null = 0x8176388}, curGroupPassword = {static null = { static null = <same as static member of an already seen type>, d = 0x8176388, static shared_null = 0x8176388}, d = 0x87134a8, static shared_null = 0x8176388}, recGroupType = {sh = 0x82da700}, recGroupPwCache = {sh = 0x8579a08}, recGroupLastItem = 0, recGroupPopup = 0x0, recGroupListBox = 0xbfffed50, recGroupLineEdit = 0x42721c40, recGroupLineEdit1 = 0xbfffed20, recGroupOldPassword = 0x0, recGroupNewPassword = 0x83b3488, recGroupOkButton = 0x67, recGroupChooserPassword = {static null = { static null = <same as static member of an already seen type>, d = 0x8176388, static shared_null = 0x8176388}, d = 0x8176388, static shared_null = 0x8176388}, groupnameAsAllProg = false, previewPixmap = 0x0, previewLastModified = {d = {jd = 0}, t = {ds = 0}}, previewFilets = {d = {jd = 0}, t = {ds = 0}}, previewStartts = {d = { jd = 2453673}, t = {ds = 77568733}}, previewChanid = {static null = { static null = <same as static member of an already seen type>, d = 0x8176388, static shared_null = 0x8176388}, d = 0x85954f0, static shared_null = 0x8176388}, listOrder = 1, playingSomething = true, titleView = true, useRecGroups = false, useCategories = false, conv_yuv2rgba = 0x40496206 <mmx_argb32>, conv_rgba_buf = 0x0, conv_rgba_size = {wd = 0, ht = 0}, everStartedVideo = false, previewGeneratorLock = <incomplete type>, previewGenerator = { sh = 0x82d9e20}} #16 0x0807060e in TVMenuCallback (data=0x81a3c78, selection=@0x83b3488) at main.cpp:372 sel = {static null = { static null = <same as static member of an already seen type>, d = 0x8176388, static shared_null = 0x8176388}, d = 0x86ca430, static shared_null = 0x8176388} #17 0x40ce0fc3 in ThemedMenuPrivate::handleAction (this=0x83b3390, action=@0x83f61a0) at themedmenu.cpp:2497 ok = true #18 0x40cdf42d in ThemedMenuPrivate::keyPressHandler (this=0x83b3390, e=0xbffff5c0) at themedmenu.cpp:2325 it = {node = 0x83f6198} action = {static null = { static null = <same as static member of an already seen type>, d = 0x8176388, static shared_null = 0x8176388}, d = 0x8436ef8, static shared_null = 0x8176388} i = 0 lastbutton = (ThemedButton *) 0x85df868 oldrow = 0 handled = true actions = {<QValueList<QString>> = {sh = 0x8709418}, <No data fields>} #19 0x40ce26f4 in ThemedMenu::keyPressEvent (this=0x8578598, e=0xbffff5c0) at themedmenu.cpp:2695 No locals. #20 0x4239d405 in QWidget::event () from /usr/lib/libqt-mt.so.3 No symbol table info available. #21 0x4230a69f in QApplication::internalNotify () from /usr/lib/libqt-mt.so.3 No symbol table info available. #22 0x4230a194 in QApplication::notify () from /usr/lib/libqt-mt.so.3 No symbol table info available. #23 0x422a0ea0 in QETWidget::translateKeyEvent () from /usr/lib/libqt-mt.so.3 No symbol table info available. #24 0x4229cb82 in QApplication::x11ProcessEvent () from /usr/lib/libqt-mt.so.3 No symbol table info available. #25 0x422b3ad4 in QEventLoop::processEvents () from /usr/lib/libqt-mt.so.3 No symbol table info available. #26 0x4231ca58 in QEventLoop::enterLoop () from /usr/lib/libqt-mt.so.3 No symbol table info available. #27 0x4230a951 in QApplication::enter_loop () from /usr/lib/libqt-mt.so.3 No symbol table info available. #28 0x40d63913 in MythDialog::exec (this=0x8578598) at mythdialogs.cpp:1042 res = 1087781020 #29 0x08071476 in RunMenu (themedir= {static null = {static null = <same as static member of an already seen type>, d = 0x8176388, static shared_null = 0x8176388}, d = 0x83bd640, static shared_null = 0x8176388}) at main.cpp:533 exitstatus = 0 #30 0x08076c6b in main (argc=1, argv=0xbffffe14) at main.cpp:1109 a = <incomplete type> dir = <incomplete type> themedir = {static null = { static null = <same as static member of an already seen type>, d = 0x8176388, static shared_null = 0x8176388}, d = 0x83bd640, static shared_null = 0x8176388} exitstatus = 29812 binname = {static null = { static null = <same as static member of an already seen type>, d = 0x8176388, static shared_null = 0x8176388}, d = 0x81a3ab0, static shared_null = 0x8176388} logfd = -1 priv_thread = 1125669808 randomtheme = false mainWindow = (class MythMainWindow *) 0x83bd4e8 pmanager = (MythPluginManager *) 0x850e4f8 geometry = {static null = { static null = <same as static member of an already seen type>, d = 0x8176388, static shared_null = 0x8176388}, d = 0x818b708, static shared_null = 0x8176388} verboseString = {static null = { static null = <same as static member of an already seen type>, d = 0x8176388, static shared_null = 0x8176388}, d = 0x81a3a38, static shared_null = 0x8176388} pluginname = {static null = { static null = <same as static member of an already seen type>, d = 0x8176388, static shared_null = 0x8176388}, d = 0x81a3a50, static shared_null = 0x8176388} fileprefix = {static null = { static null = <same as static member of an already seen type>, d = 0x8176388, static shared_null = 0x8176388}, d = 0x81a3b58, static shared_null = 0x8176388} status = 0 logfile = {static null = { static null = <same as static member of an already seen type>, d = 0x8176388, static shared_null = 0x8176388}, d = 0x81a3a20, static shared_null = 0x8176388} finfo = {fn = {static null = { static null = <same as static member of an already seen type>, d = 0x8176388, static shared_null = 0x8176388}, d = 0x81a3a98, static shared_null = 0x8176388}, fic = 0x0, cache = true, symLink = false} ---Type <return> to continue, or q <return> to quit--- themename = {static null = { static null = <same as static member of an already seen type>, d = 0x8176388, static shared_null = 0x8176388}, d = 0x8512428, static shared_null = 0x8176388} mon = (class MediaMonitor *) 0x0 #31 0x417db974 in __libc_start_main () from /lib/tls/libc.so.6 No symbol table info available. #32 0x0806ec61 in _start () at ../sysdeps/i386/elf/start.S:102 No locals. 0x451bbf6e 244 in filter_quickdnr.c
I'm not sure what file is giving me problems, but the last line of the backtrace mentions filter_quickdnr.c, so I'm going to attach the assembler output of that one. To be more specific, I've used this command line:
gcc-3.4 -c -pipe -march=pentium3 -Wall -W -g -Wno-missing-prototypes -D_REENTRANT -DPIC -fPIC -DMMX -Di386 -DUSING_DBOX2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DPREFIX=\"/usr\" -DQT_THREAD_SUPPORT -DQT_PLUGIN -DQT_SHARED -DQT_NO_DEBUG -I/usr/share/qt3/mkspecs/default -I. -I/usr/include -I/usr/X11R6/include -I../../libs/libavcodec -I../../libs/libavutil -I../../libs/libmythtv -I../../libs/libavcodec -I../.. -I/usr/include/qt3 -S filter_quickdnr.c
I hope this is what you've been asking for. If not, just complain :)
comment:6 Changed 18 years ago by
Resolution: | → fixed |
---|---|
Status: | reopened → closed |
The quickdnr function was using prefetch which is only available some a subset of MMX capable processors and this was being used based on a simple MMX available test.
Also these prefetches are pointless and may even slow down the code because sequental array accesses are already prefetched at the T0 level by the processors that support prefetch; the extra instructions just give the instruction decoder more to do without any benefit.
I commented them out rather than removing them entirely because this code might be resynced to from outside MythTV.
It has fixed itself, kind of.
It seems that ./configure didn't accept --arch=i686 when I tried it the first time, thus using the old "-march=pentium2" optimization. That was likely related to my bad build script :). Now I've tried it again and it works, resulting in "-march=i686" being passed to gcc.
D'oh!