<57221E38FB4DD54C946CE654959A554D05DD00E784@GVW0436EXB.americas.hpqcorp.net>
Current votes: None.
------=_NextPart_000_00AB_01C8CB14.2C601D20 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Boris Zbarsky wrote: > Bonner, Matt wrote: > > I see several places in the HTML 5 spec, where a UA is required > > to start executing something once all other scripts have stopped > > executing. It seems possible that this could lead to race > > conditions, or deadlock, depending on use. > > Matt, for that to happen you have to have some code that > blocks on the result of the script execution, right? For deadlock, yes; for race conditions, no. The race conditions are caused by authors having no idea which of the dozen or so actions I listed will happen in which order "once all scripts have stopped executing." > Given the primitives available to web script (no synchronization > primitives of any kind), that basically means busy-looping on a > boolean that's modified outside of the loop. Or perhaps waiting on a server or network peer response? There are also many parts of the Networking API that remain to be defined. > But since the model exposed to JS is single-threaded, the value > of the boolean can't change during such a loop, so this technique > doesn't work either (no matter what HTML5 specifies in terms of > waiting for scripts to finish executing). If the boolean in function A() can't change, and it's waiting for a script that won't start until A() stops, then you have deadlock. I don't understand what you mean when you say that technique doesn't work. Worse still, if the author tested locally, and on browsers, script B() always executed before A(), the author will think her page is ready to deploy. Matt -- Matt Bonner Hewlett-Packard Company > -----Original Message----- > From: Boris Zbarsky [mailto:bzbarsky@MIT.EDU] > Sent: Monday, June 09, 2008 9:50 PM > To: Bonner, Matt > Cc: public-html@w3.org > Subject: Re: Race conditions in HTML 5? > > Bonner, Matt wrote: > > I see several places in the HTML 5 spec, where a UA is required > > to start executing something once all other scripts have stopped > > executing. It seems possible that this could lead to race > > conditions, or deadlock, depending on use. > > Matt, for that to happen you have to have some code that > blocks on the result of > the script execution, right? Given the primitives available > to web script (no > synchronization primitives of any kind), that basically means > busy-looping on a > boolean that's modified outside of the loop. > > But since the model exposed to JS is single-threaded, the > value of the boolean > can't change during such a loop, so this technique doesn't > work either (no > matter what HTML5 specifies in terms of waiting for scripts > to finish executing). > > This lack of ways to block script execution means it's very > hard for web authors > to shoot themselves in the foot here. > > I suppose you could get more complicated situations in which > one script's > execution immediately causes another script's execution, I > suppose, but I think > part of the goal here is to prevent that: if a script adds > more scripts to the > DOM, they won't execute until all currently executing scripts > are done. > > -Boris > ------=_NextPart_000_00AB_01C8CB14.2C601D20 Content-Type: application/x-pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIN/jCCAwMw ggJsAhEAuS9gzIifoXpGCbhbcGyKrzANBgkqhkiG9w0BAQUFADCBwTELMAkGA1UEBhMCVVMxFzAV BgNVBAoTDlZlcmlTaWduLCBJbmMuMTwwOgYDVQQLEzNDbGFzcyAyIFB1YmxpYyBQcmltYXJ5IENl cnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIxOjA4BgNVBAsTMShjKSAxOTk4IFZlcmlTaWduLCBJ bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5l dHdvcmswHhcNOTgwNTE4MDAwMDAwWhcNMjgwODAxMjM1OTU5WjCBwTELMAkGA1UEBhMCVVMxFzAV BgNVBAoTDlZlcmlTaWduLCBJbmMuMTwwOgYDVQQLEzNDbGFzcyAyIFB1YmxpYyBQcmltYXJ5IENl cnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIxOjA4BgNVBAsTMShjKSAxOTk4IFZlcmlTaWduLCBJ bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5l dHdvcmswgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKeIASF0LOcaA/CY4Zc8DyEI8Zzbl+ma /MIEBhO+X1LIzB4sElYsuAFpLMyZH62wlq55BPITOcF7mLoILOjChBMsqmnpCfTHqQKkQsIjT0rY 8A6i+zFsyeZvmScH9eb0THiebetGhvq5hslU8rLEr9RGHFrJFTD/DWz1LQ5tzn93AgMBAAEwDQYJ KoZIhvcNAQEFBQADgYEAci75f9HxcfvEnvbFXlGKQJi4aPibHIPY4p29/+2h5mbqLwn0ytfqpSuV 9iRghk1ELoOlxC2g0654aW9y2myuCPBjkjfmu8QwF613zEk1qs/Yj9G+txiWR3NqVCI0ZC22FptZ W7RRWTqzCxT0Et9noPStMmResUZyJ4wSe8VEtK4wggQlMIIDjqADAgECAhB3lLeh2K9TSN0bRHs7 wmmDMA0GCSqGSIb3DQEBBQUAMIHBMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIElu Yy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp dHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXpl ZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazAeFw0wMTA0MjQwMDAw MDBaFw0xMTA0MjMyMzU5NTlaMIHiMSAwHgYDVQQKExdIZXdsZXR0LVBhY2thcmQgQ29tcGFueTEf MB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazE7MDkGA1UECxMyVGVybXMgb2YgdXNlIGF0 IGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9ycGEgKGMpMDExMDAuBgNVBAsTJ0NsYXNzIDIgT25T aXRlIEluZGl2aWR1YWwgU3Vic2NyaWJlciBDQTEuMCwGA1UEAxMlQ29sbGFib3JhdGlvbiBDZXJ0 aWZpY2F0aW9uIEF1dGhvcml0eTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwHBTCwUTa0hb aHog6TMn4eE7398EjzwgM69HP+K7kNyVfFWph26qBIDYAZLebCYtGIb7k9yTmPRVIWAdYDgw28tQ +Q8belgqEWmwzmv9ISTlEgFvOFLKc+cgI9/FKCiRN2QW12uHsugJhKBwNJ21zB7MDoEdBjGY1MyY 5T1+5TsCAwEAAaOB+jCB9zAPBgNVHRMECDAGAQH/AgEAMEQGA1UdIAQ9MDswOQYLYIZIAYb4RQEH AQEwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYTALBgNVHQ8EBAMC AQYwEQYJYIZIAYb4QgEBBAQDAgEGMCkGA1UdEQQiMCCkHjAcMRowGAYDVQQDExFQcml2YXRlTGFi ZWwxLTM4MjA0BgNVHR8ELTArMCmgJ6AlhiNodHRwOi8vY3JsLnZlcmlzaWduLmNvbS9wY2EyLWcy LmNybDAdBgNVHQ4EFgQU7+0gzUNFH4NHYBWWQ3JK5MbM5z0wDQYJKoZIhvcNAQEFBQADgYEAIC20 InJbjxHbFARQiJa3lZPqTCrVfV5vngYprhEGanLYRa9c6bf2tbkHdxBelAHWJaLSzZW6NF4K3fkq NjtRHaR16iUovo4pRS6hJvUywmKS38AK5V6iAMcYf1n57MF3WcG2ZVeI97IUd9cYB0G8dY+vGp77 WZNqiQC9vwkPTzwwggbKMIIGM6ADAgECAhBPk6Ki6Rras1F66Yguaf1vMA0GCSqGSIb3DQEBBQUA MIHiMSAwHgYDVQQKExdIZXdsZXR0LVBhY2thcmQgQ29tcGFueTEfMB0GA1UECxMWVmVyaVNpZ24g VHJ1c3QgTmV0d29yazE7MDkGA1UECxMyVGVybXMgb2YgdXNlIGF0IGh0dHBzOi8vd3d3LnZlcmlz aWduLmNvbS9ycGEgKGMpMDExMDAuBgNVBAsTJ0NsYXNzIDIgT25TaXRlIEluZGl2aWR1YWwgU3Vi c2NyaWJlciBDQTEuMCwGA1UEAxMlQ29sbGFib3JhdGlvbiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 eTAeFw0wODAyMDEwMDAwMDBaFw0xMDAxMzEyMzU5NTlaMIGUMSAwHgYDVQQKFBdIZXdsZXR0LVBh Y2thcmQgQ29tcGFueTEmMCQGA1UECxQdRW1wbG95bWVudCBTdGF0dXMgLSBFbXBsb3llZXMxDzAN BgNVBAsUBlMvTUlNRTEUMBIGA1UEAxMLTWF0dCBCb25uZXIxITAfBgkqhkiG9w0BCQEWEm1hdHQu Ym9ubmVyQGhwLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0/kcnFra+CFSBNbyzOI6 Ui2mJZ++NUV3Q5IlnjoBi/5ct6rjxlhYnJ8Vf21FsDIAH4K7YRTLvabE75aTLBREl8d/Xl6XiGFv QWlUHs+keWmsAa/r7ndmykDESY1/KIGcIdwONL1iN6eVr94EKH/D/ED/48Q6xeYnv4V54dJsekcC AwEAAaOCA8swggPHMDEGA1UdEQQqMCiBEm1hdHQuYm9ubmVyQGhwLmNvbYESbWF0dF9ib25uZXJA aHAuY29tMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgWgMB8GA1UdIwQYMBaAFO/tIM1DRR+D R2AVlkNySuTGzOc9MB0GA1UdDgQWBBTQy5kQUf4VijXLbptN/K1rL8Mb0DBXBgNVHR8EUDBOMEyg SqBIhkZodHRwOi8vb25zaXRlY3JsLnZlcmlzaWduLmNvbS9IZXdsZXR0UGFja2FyZENvbXBhbnlT TUlNRS9MYXRlc3RDUkwuY3JsMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMEMIIBPQYDVR0gBIIBNDCC ATAwggEsBgtghkgBhvhFAQcXAjCCARswKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWdu LmNvbS9DUFMwge4GCCsGAQUFBwICMIHhMB4WF0hld2xldHQtUGFja2FyZCBDb21wYW55MAMCAQIa gb5BdXRob3JpdHkgdG8gYmluZCBIUCBkb2VzIG5vdCBjb3JyZXNwb25kIHdpdGggdXNlIG9yIHBv c3Nlc3Npb24gb2YgdGhpcyBjZXJ0aWZpY2F0ZS4gSXNzdWVkIHRvIGZhY2lsaXRhdGUgY29tbXVu aWNhdGlvbiB3aXRoIEhQLiBWZXJpU2lnbidzIENQUyBpbmNvcnAuIEJ5IHJlZmVyZW5jZSBsaWFi LiBsdGQuIChjKTk3IFZlcmlTaWduMIIBMwYIKwYBBQUHAQEEggElMIIBITArBggrBgEFBQcwAYYf aHR0cDovL29uc2l0ZS1vY3NwLnZlcmlzaWduLmNvbTCB8QYIKwYBBQUHMAKkgeQwgeExLjAsBgNV BAMTJUNvbGxhYm9yYXRpb24gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxMDAuBgNVBAsTJ0NsYXNz IDIgT25TaXRlIEluZGl2aWR1YWwgU3Vic2NyaWJlciBDQTE6MDgGA1UECxMxVGVybXMgb2YgdXNl IGF0IGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9ycGEoYykwMTEfMB0GA1UECxMWVmVyaVNpZ24g VHJ1c3QgTmV0d29yazEgMB4GA1UEChMXSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkwSwYJKoZIhvcN AQkPBD4wPDAOBggqhkiG9w0DAgICAIAwDgYIKoZIhvcNAwICAgBAMA4GCCqGSIb3DQMEAgIAgDAK BggqhkiG9w0DBzANBgkqhkiG9w0BAQUFAAOBgQCZmPmkd8gRbZu2WZ5tmxK5YNmbFTBDZo1fgdjh x0/PdZwJXn5flC1C0lzdcH4BmvvcJFfqIfYgsYp2iz+UOTykz77Btq3WoT1lO/6wtr7v0uyk59Au Wd0Seo0WiccEAN+g2Jy1YuIDT5SJNYUWvFnNN9rs1W0f+mfXImYypmivuTGCBIIwggR+AgEBMIH3 MIHiMSAwHgYDVQQKExdIZXdsZXR0LVBhY2thcmQgQ29tcGFueTEfMB0GA1UECxMWVmVyaVNpZ24g VHJ1c3QgTmV0d29yazE7MDkGA1UECxMyVGVybXMgb2YgdXNlIGF0IGh0dHBzOi8vd3d3LnZlcmlz aWduLmNvbS9ycGEgKGMpMDExMDAuBgNVBAsTJ0NsYXNzIDIgT25TaXRlIEluZGl2aWR1YWwgU3Vi c2NyaWJlciBDQTEuMCwGA1UEAxMlQ29sbGFib3JhdGlvbiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 eQIQT5Oiouka2rNReumILmn9bzAJBgUrDgMCGgUAoIIC4DAYBgkqhkiG9w0BCQMxCwYJKoZIhvcN AQcBMBwGCSqGSIb3DQEJBTEPFw0wODA2MTAyMzA4MDhaMCMGCSqGSIb3DQEJBDEWBBSjJ3H60IMG x6WYkK7sMa/IlYcQMjBnBgkqhkiG9w0BCQ8xWjBYMAoGCCqGSIb3DQMHMA4GCCqGSIb3DQMCAgIA gDANBggqhkiG9w0DAgIBQDAHBgUrDgMCBzANBggqhkiG9w0DAgIBKDAHBgUrDgMCGjAKBggqhkiG 9w0CBTCCAQgGCSsGAQQBgjcQBDGB+jCB9zCB4jEgMB4GA1UEChMXSGV3bGV0dC1QYWNrYXJkIENv bXBhbnkxHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1zIG9m IHVzZSBhdCBodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhIChjKTAxMTAwLgYDVQQLEydDbGFz cyAyIE9uU2l0ZSBJbmRpdmlkdWFsIFN1YnNjcmliZXIgQ0ExLjAsBgNVBAMTJUNvbGxhYm9yYXRp b24gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkCEE+ToqLpGtqzUXrpiC5p/W8wggEKBgsqhkiG9w0B CRACCzGB+qCB9zCB4jEgMB4GA1UEChMXSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkxHzAdBgNVBAsT FlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczov L3d3dy52ZXJpc2lnbi5jb20vcnBhIChjKTAxMTAwLgYDVQQLEydDbGFzcyAyIE9uU2l0ZSBJbmRp dmlkdWFsIFN1YnNjcmliZXIgQ0ExLjAsBgNVBAMTJUNvbGxhYm9yYXRpb24gQ2VydGlmaWNhdGlv biBBdXRob3JpdHkCEE+ToqLpGtqzUXrpiC5p/W8wDQYJKoZIhvcNAQEBBQAEgYBpZ6k17HNLauk5 IUFjZjfgI1DJt25Y8sewi0eZNJB/HSNBFcmxNxf9QoJeR/G9itiV3Kod4AOSxYpWxGPBR/ZoZ4M2 6cHNJ7iWyinG9HiV5zP2y66quhgawlOabFBhUPirvZTwGUI1ieMEc9C1oKLHm2oSt802xYYgqOZP wcXwFgAAAAAAAA== ------=_NextPart_000_00AB_01C8CB14.2C601D20--