[Libav-user] Kernel preemption incompatible with libav?

Anshul anshul.ffmpeg at gmail.com
Thu Apr 10 17:50:48 CEST 2014


Andrew Muehlfeld <andrew.muehlfeld at fourthwing.com> wrote:
>I am using an old version of the libav libraries compiled for ARM,
>running on an embedded processor, using Linux 3.0.0.  ffmpeg version is
>2008-09-16, SVN-r15339.  I am using libavformat, libavutil, and
>libavcodec to package an H.264 ES into an MPEG-2 TS.  My application
>runs fine with linux kernel preemption disabled (CONFIG_PREEMPT_NONE),
>but fails when set to voluntary preepmtion (CONFIG_PREEMPT_VOLUNTARY)
>or full preemption (CONFIG_PREEMPT).  Is this expected? Due to other
>things running on the processor, kernel preemption is required. I am
>considering compiling the latest ffmpeg and trying again, but thought
>it would be worth asking first.
>
>Below is the kernel output when running my application that uses libav
>with kernel preemption enabled.
>
>[ 3367.879028] BUG: sleeping function called from invalid context at
>arch/arm/mm/fault.] (_raw_spin_lock_irqsave+0x48/0x84)
>[ 3368.018646] [<c055a6b4>] (_raw_spin_lock_irqsave+0x48/0x84) from
>[<c00a6470>] (remove_wait_queue+0x10/0x48)
>[ 3368.029113] [<c00a6470>] (remove_wait_queue+0x10/0x48) from
>[<bf033cb0>] (SYNC_WaitSEM+0x1a4/0x24c [dsplinkk])
>[ 3368.039855] [<bf033cb0>] (SYNC_WaitSEM+0x1a4/0x24c [dsplinkk]) from
>[<bf02966c>] (LDRV_MSGQ_get+0x98/0xcc [dsplinkk])
>[ 3368.051269] [<bf02966c>] (LDRV_MSGQ_get+0x98/0xcc [dsplinkk]) from
>[<bf037180>] (DRV_Ioctl+0x460/0x958 [dsplinkk])
>[ 3368.062286] [<bf037180>] (DRV_Ioctl+0x460/0x958 [dsplinkk]) from
>[<c0133db4>] (do_vfs_ioctl+0x88/0x580)
>[ 3368.072174] [<c0133db4>] (do_vfs_ioctl+0x88/0x580) from [<c0134320>]
>(sys_ioctl+0x74/0x7c)
>[ 3368.080902] [<c0134320>] (sys_ioctl+0x74/0x7c) from [<c0051040>]
>(ret_fast_syscall+0x0/0x3c)
>[ 3368.089782] Unable to handle kernel paging request at virtual
>address f11bb018
>[ 3368.097381] pgd = def9c000
>[ 3368.100219] [f11bb018] *pgd=9ced2811, *pte=00000000, *ppte=00000000
>[ 3368.106842] Internal error: Oops: 7 [#1]
>[ 3368.110961] Modules linked in: sdmak lpm_omap3530 dsplinkk cmemk
>g_ether
>[ 3368.118072] CPU: 0    Not tainted  (3.0.0-BSP-dm37x-2.3-2-svn155
>#384)
>[ 3368.124938] PC is at __lock_acquire+0x6c/0x1d30
>[ 3368.129699] LR is at lock_acquire+0xd4/0xf8
>[ 3368.134124] pc : [<c00bcb74>]    lr : [<c00bee40>]    psr: 20000093
>[ 3368.134124] sp : dcd6fd10  ip : dce86140  fp : c08fb060
>[ 3368.146179] r10: c0940f70  r9 : c08de2f0  r8 : f11bb018
>[ 3368.151672] r7 : 00000000  r6 : 00000002  r5 : 00000001  r4 :
>00000001
>[ 3368.158538] r3 : 60000093  r2 : 00000000  r1 : 00000000  r0 :
>f11bb018
>[ 3368.165405] Flags: nzCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM 
>Segment user
>[ 3368.173004] Control: 10c5387d  Table: 9ef9c019  DAC: 00000015
>[ 3368.179046] Process boostApp_dm3730 (pid: 9307, stack limit =
>0xdcd6e2f0)
>[ 3368.186157] Stack: (0xdcd6fd10 to 0xdcd70000)
>[ 3368.190765] fd00:                                     dce86140
>c008220c 00000000 dce86140
>[ 3368.199371] fd20: dede9700 c00bb9e8 00000000 dce8a080 00000000
>c008220c dede9700 00000094
>[ 3368.207977] fd40: dce92040 dce86140 dcd6fdec c0557a24 00000000
>00000000 dce86140 00000001
>[ 3368.216583] fd60: c08f349c c076860c c08fb060 c0762168 c0558338
>dcd6e000 18c4f852 00000310
>[ 3368.225189] fd80: 00000000 dce86590 0000028b 00000000 00000002
>dce86590 0000028e 00000000
>[ 3368.233795] fda0: 00000007 c0940f70 ffffffff dce86140 dcd6fe00
>c00bb6a4 dce86140 c0558c20
>[ 3368.242401] fdc0: e097f000 00000000 00000000 00000000 00000000
>f11bb018 00000002 60000093
>[ 3368.251007] fde0: 00000000 c00bee40 00000002 00000080 00000000
>c00a6470 00000000 00000000
>[ 3368.259613] fe00: 00000000 00000000 f11bb018 f11bb008 c00a6470
>00000013 ffffffff 80040800
>[ 3368.268218] fe20: 43bec624 c055a6b4 00000002 00000000 c00a6470
>f11bb008 dcd6fe64 f11bb008
>[ 3368.276824] fe40: 00000001 f11bb008 dcd6fe64 c00a6470 fffffe00
>dcd6e000 00000001 bf033cb0
>[ 3368.285430] fe60: 60000013 00000001 dce86140 c00820f4 f11bb030
>f11bb030 60000013 00000000
>[ 3368.294036] fe80: 00008000 bf03af58 dcd6fefc f11b7000 80040800
>bf02966c c018e03a 43bec63c
>[ 3368.302642] fea0: 00000009 43bec63c dcd6fee4 dcd6e000 00000000
>bf037180 00000001 dce86590
>[ 3368.311248] fec0: 0000000b 00000000 00000002 c055d39c dce86140
>c008220c 00000001 dce86140
>[ 3368.319854] fee0: dede9700 00008000 001d6e90 00010000 ffffffff
>00000000 00008000 00000000
>[ 3368.328460] ff00: def78180 43bec63c 00000009 43bec63c def78180
>dcd6e000 00000000 c0133db4
>[ 3368.337066] ff20: c0125890 c00b8f08 00000000 00000000 dce86140
>c0125890 00000001 c00bed48
>[ 3368.345672] ff40: def78180 00000000 00000009 dcd6ff8c c0051208
>dcd6e000 00000000 c01258a4
>[ 3368.354278] ff60: 00000001 00000000 43bec63c c018e03a 00000009
>def78180 dcd6e000 00000000
>[ 3368.362884] ff80: 43bec624 c0134320 001bc400 00000001 001bc400
>ffffffff 43bec6d4 00000036
>[ 3368.371490] ffa0: c0051208 c0051040 001bc400 ffffffff 00000009
>c018e03a 43bec63c 00000009
>[ 3368.380096] ffc0: 001bc400 ffffffff 43bec6d4 00000036 00010000
>00011524 001bcac0 43bec624
>[ 3368.388702] ffe0: 001cd924 43bec510 000682a0 411e8aec 80000010
>00000009 01891a28 e2000000
>[ 3368.397308] [<c00bcb74>] (__lock_acquire+0x6c/0x1d30) from
>[<c00bee40>] (lock_acquire+0xd4/0xf8)
>[ 3368.406585] [<c00bee40>] (lock_acquire+0xd4/0xf8) from [<c055a6b4>]
>(_raw_spin_lock_irqsave+0x48/0x84)
>[ 3368.416381] [<c055a6b4>] (_raw_spin_lock_irqsave+0x48/0x84) from
>[<c00a6470>] (remove_wait_queue+0x10/0x48)
>[ 3368.426757] [<c00a6470>] (remove_wait_queue+0x10/0x48) from
>[<bf033cb0>] (SYNC_WaitSEM+0x1a4/0x24c [dsplinkk])
>[ 3368.437499] [<bf033cb0>] (SYNC_WaitSEM+0x1a4/0x24c [dsplinkk]) from
>[<bf02966c>] (LDRV_MSGQ_get+0x98/0xcc [dsplinkk])
>[ 3368.448883] [<bf02966c>] (LDRV_MSGQ_get+0x98/0xcc [dsplinkk]) from
>[<bf037180>] (DRV_Ioctl+0x460/0x958 [dsplinkk])
>[ 3368.459899] [<bf037180>] (DRV_Ioctl+0x460/0x958 [dsplinkk]) from
>[<c0133db4>] (do_vfs_ioctl+0x88/0x580)
>[ 3368.469787] [<c0133db4>] (do_vfs_ioctl+0x88/0x580) from [<c0134320>]
>(sys_ioctl+0x74/0x7c)
>[ 3368.478485] [<c0134320>] (sys_ioctl+0x74/0x7c) from [<c0051040>]
>(ret_fast_syscall+0x0/0x3c)
>[ 3368.487365] Code: e34ca094 e59a3000 e3530000 0a000073 (e5982000)
>[ 3368.494506] ---[ end trace 229bd4d4db5b35dd ]---
>[ 3368.500762] Unable to handle kernel paging request at virtual
>address e0a03094
>[ 3368.508453] pgd = def9c000
>[ 3368.511291] [e0a03094] *pgd=9efc1811, *pte=00000000, *ppte=00000000
>[ 3368.517974] Internal error: Oops: 807 [#2]
>[ 3368.522308] Modules linked in: sdmak lpm_omap3530 dsplinkk cmemk
>g_ether
>[ 3368.529418] CPU: 0    Tainted: G      D     
>(3.0.0-BSP-dm37x-2.3-2-svn155 #384)
>[ 3368.537322] PC is at ZCPYMQT_locate+0x17c/0x2cc [dsplinkk]
>[ 3368.543090] LR is at _raw_spin_unlock_irqrestore+0x30/0x44
>[ 3368.548889] pc : [<bf02a874>]    lr : [<c055ae40>]    psr: a0000013
>[ 3368.548889] sp : dcebde48  ip : 00000000  fp : 0019e194
>[ 3368.560943] r10: 001e422c  r9 : 001e422c  r8 : 00000001
>[ 3368.566436] r7 : bf03af98  r6 : 0019e194  r5 : 00000000  r4 :
>fffffe00
>[ 3368.573303] r3 : e0a03080  r2 : 00000000  r1 : 80008051  r0 :
>80040800
>[ 3368.580169] Flags: NzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM 
>Segment user
>[ 3368.587677] Control: 10c5387d  Table: 9ef9c019  DAC: 00000015
>[ 3368.593719] Process boostApp_dm3730 (pid: 9312, stack limit =
>0xdcebc2f0)
>[ 3368.600830] Stack: (0xdcebde48 to 0xdcebe000)
>[ 3368.605438] de40:                   0000000a 00000001 f11d1000
>00000000 00000000 e0a03080
>[ 3368.614044] de60: c018e034 00000000 00000001 e0909000 bf03af58
>4664f424 8000802d bf029858
>[ 3368.622650] de80: 4664f424 c0073cb8 00000002 00000000 dce90140
>c018e034 4664f3f0 00000009
>[ 3368.631256] dea0: 4664f3f0 dcebdee4 dcebc000 00000000 4664f3dc
>bf037230 00000001 dce90590
>[ 3368.639862] dec0: 0000000b 00000000 00000002 c055d39c dce90140
>c008220c 00000001 dce90140
>[ 3368.648468] dee0: dede9700 00008000 0019e194 001e422c 4664f424
>001bc400 001e422c 00000000
>[ 3368.657073] df00: def78180 4664f3f0 00000009 4664f3f0 def78180
>dcebc000 00000000 c0133db4
>[ 3368.665679] df20: c0125890 c00b8f08 00000000 00000000 dce90140
>c0125890 00000001 c00bed48
>[ 3368.674285] df40: def78180 00000000 00000009 dcebdf8c c0051208
>dcebc000 00000000 c01258a4
>[ 3368.682891] df60: 00000001 00000000 4664f3f0 c018e034 00000009
>def78180 dcebc000 00000000
>[ 3368.691497] df80: 4664f3dc c0134320 001cd924 00000001 001cd924
>001cd924 00000001 00000036
>[ 3368.700103] dfa0: c0051208 c0051040 001cd924 001cd924 00000009
>c018e034 4664f3f0 00000009
>[ 3368.708709] dfc0: 001cd924 001cd924 00000001 00000036 001e422c
>4664f424 0019e194 4664f3dc
>[ 3368.717315] dfe0: 001bc400 4664f2c8 00069768 411e8aec 80000010
>00000009 0d3b1a4e 0f06450d
>[ 3368.726135] [<bf02a874>] (ZCPYMQT_locate+0x17c/0x2cc [dsplinkk])
>from [<bf029858>] (LDRV_MSGQ_locate+0xc4/0xe4 [dsplinkk])
>[ 3368.737976] [<bf029858>] (LDRV_MSGQ_locate+0xc4/0xe4 [dsplinkk])
>from [<bf037230>] (DRV_Ioctl+0x510/0x958 [dsplinkk])
>[ 3368.749267] [<bf037230>] (DRV_Ioctl+0x510/0x958 [dsplinkk]) from
>[<c0133db4>] (do_vfs_ioctl+0x88/0x580)
>[ 3368.759155] [<c0133db4>] (do_vfs_ioctl+0x88/0x580) from [<c0134320>]
>(sys_ioctl+0x74/0x7c)
>[ 3368.767883] [<c0134320>] (sys_ioctl+0x74/0x7c) from [<c0051040>]
>(ret_fast_syscall+0x0/0x3c)
>[ 3368.776763] Code: e3000800 e3480004 e3081051 e3481000 (e583c014)
>[ 3368.783294] ---[ end trace 229bd4d4db5b35de ]---
>[ 3368.833831] smsc911x smsc911x.0: eth0: maccr 0x1010200C, HASHH
>0x00000000, HASHL 0x80000000
>
>Thank you!
>
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Libav-user mailing list
>Libav-user at ffmpeg.org
>http://ffmpeg.org/mailman/listinfo/libav-user


I use latest git ffmpeg with preemption enabled kernel on x86.
So its worth trying.
-Anshul

-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.


More information about the Libav-user mailing list