Open Bug 1740032 Opened 3 years ago Updated 3 years ago

Various bustages in UnifiedProtocols when adjusting the value of files_per_unified_file

Categories

(Core :: IPC, defect)

defect

Tracking

()

People

(Reporter: RyanVM, Unassigned)

References

Details

As was recently seen in bug 1739677 and bug 1700463 before that, UnifiedBindings and UnifiedProtocols are prone to random bustage due to changes which affect which source files are included in each Unified CPP file.

I ran some Try pushes with different values set in https://searchfox.org/mozilla-central/source/python/mozbuild/mozbuild/frontend/data.py#377 to find more lurking issues:

files_per_unified_file=1
https://treeherder.mozilla.org/logviewer?job_id=357232612&repo=try&lineNumber=38501

 INFO -      ^
 INFO -  In file included from UnifiedProtocols1.cpp:2:
 INFO -  In file included from /builds/worker/workspace/obj-build/ipc/ipdl/CacheTypes.cpp:22:
 INFO -  In file included from /builds/worker/workspace/obj-build/dist/include/mozilla/ipc/ShmemMessageUtils.h:11:
ERROR -  /builds/worker/workspace/obj-build/dist/include/mozilla/ipc/IPDLParamTraits.h:41:26: error: no member named 'Write' in 'IPC::ParamTraits<nsILoadInfo::CrossOriginEmbedderPolicy>'
 INFO -      IPC::ParamTraits<P>::Write(aMsg, std::forward<R>(aParam));
 INFO -      ~~~~~~~~~~~~~~~~~~~~~^
 INFO -  /builds/worker/workspace/obj-build/dist/include/mozilla/ipc/IPDLParamTraits.h:64:37: note: in instantiation of function template specialization 'mozilla::ipc::IPDLParamTraits<nsILoadInfo::CrossOriginEmbedderPolicy>::Write<const nsILoadInfo::CrossOriginEmbedderPolicy &>' requested here
 INFO -    IPDLParamTraits<std::decay_t<P>>::Write(aMsg, aActor,
 INFO -                                      ^
 INFO -  /builds/worker/workspace/obj-build/ipc/ipdl/CacheTypes.cpp:321:5: note: in instantiation of function template specialization 'mozilla::ipc::WriteIPDLParam<const nsILoadInfo::CrossOriginEmbedderPolicy &>' requested here
 INFO -      WriteIPDLParam(aMsg, aActor, (aVar).loadingEmbedderPolicy());
 INFO -      ^
 INFO -  In file included from UnifiedProtocols1.cpp:2:
 INFO -  In file included from /builds/worker/workspace/obj-build/ipc/ipdl/CacheTypes.cpp:22:
 INFO -  In file included from /builds/worker/workspace/obj-build/dist/include/mozilla/ipc/ShmemMessageUtils.h:11:
ERROR -  /builds/worker/workspace/obj-build/dist/include/mozilla/ipc/IPDLParamTraits.h:47:33: error: no member named 'Read' in 'IPC::ParamTraits<nsIContentPolicy::nsContentPolicyType>'
 INFO -      return IPC::ParamTraits<P>::Read(aMsg, aIter, aResult);
 INFO -             ~~~~~~~~~~~~~~~~~~~~~^
 INFO -  /builds/worker/workspace/obj-build/dist/include/mozilla/ipc/IPDLParamTraits.h:72:30: note: in instantiation of function template specialization 'mozilla::ipc::IPDLParamTraits<nsIContentPolicy::nsContentPolicyType>::Read<nsIContentPolicy::nsContentPolicyType>' requested here
 INFO -    return IPDLParamTraits<P>::Read(aMsg, aIter, aActor, aResult);
 INFO -                               ^
 INFO -  /builds/worker/workspace/obj-build/ipc/ipdl/CacheTypes.cpp:434:12: note: in instantiation of function template specialization 'mozilla::ipc::ReadIPDLParam<nsIContentPolicy::nsContentPolicyType>' requested here
 INFO -      if ((!(ReadIPDLParam(aMsg, aIter, aActor, (&((aVar)->contentPolicyType())))))) {
 INFO -             ^
 INFO -  In file included from UnifiedProtocols1.cpp:2:
 INFO -  In file included from /builds/worker/workspace/obj-build/ipc/ipdl/CacheTypes.cpp:22:
 INFO -  In file included from /builds/worker/workspace/obj-build/dist/include/mozilla/ipc/ShmemMessageUtils.h:11:
ERROR -  /builds/worker/workspace/obj-build/dist/include/mozilla/ipc/IPDLParamTraits.h:47:33: error: no member named 'Read' in 'IPC::ParamTraits<nsILoadInfo::CrossOriginEmbedderPolicy>'
 INFO -      return IPC::ParamTraits<P>::Read(aMsg, aIter, aResult);
 INFO -             ~~~~~~~~~~~~~~~~~~~~~^
 INFO -  /builds/worker/workspace/obj-build/dist/include/mozilla/ipc/IPDLParamTraits.h:72:30: note: in instantiation of function template specialization 'mozilla::ipc::IPDLParamTraits<nsILoadInfo::CrossOriginEmbedderPolicy>::Read<nsILoadInfo::CrossOriginEmbedderPolicy>' requested here
 INFO -    return IPDLParamTraits<P>::Read(aMsg, aIter, aActor, aResult);
 INFO -                               ^
 INFO -  /builds/worker/workspace/obj-build/ipc/ipdl/CacheTypes.cpp:470:12: note: in instantiation of function template specialization 'mozilla::ipc::ReadIPDLParam<nsILoadInfo::CrossOriginEmbedderPolicy>' requested here
 INFO -      if ((!(ReadIPDLParam(aMsg, aIter, aActor, (&((aVar)->loadingEmbedderPolicy())))))) {
 INFO -             ^
 INFO -  10 errors generated.
ERROR -  gmake[4]: *** [/builds/worker/checkouts/gecko/config/rules.mk:662: UnifiedProtocols1.o] Error 1

files_per_unified_file=4
https://treeherder.mozilla.org/logviewer?job_id=357232835&repo=try&lineNumber=16009

 INFO -  In file included from UnifiedProtocols0.cpp:2:
 INFO -  In file included from /builds/worker/workspace/obj-build/ipc/ipdl/BlobTypes.cpp:17:
 INFO -  In file included from /builds/worker/workspace/obj-build/dist/include/mozilla/ipc/ShmemMessageUtils.h:11:
ERROR -  /builds/worker/workspace/obj-build/dist/include/mozilla/ipc/IPDLParamTraits.h:41:26: error: no member named 'Write' in 'IPC::ParamTraits<mozilla::TimeStamp>'
 INFO -      IPC::ParamTraits<P>::Write(aMsg, std::forward<R>(aParam));
 INFO -      ~~~~~~~~~~~~~~~~~~~~~^
 INFO -  /builds/worker/workspace/obj-build/dist/include/mozilla/ipc/IPDLParamTraits.h:64:37: note: in instantiation of function template specialization 'mozilla::ipc::IPDLParamTraits<mozilla::TimeStamp>::Write<const mozilla::TimeStamp &>' requested here
 INFO -    IPDLParamTraits<std::decay_t<P>>::Write(aMsg, aActor,
 INFO -                                      ^
 INFO -  /builds/worker/workspace/obj-build/ipc/ipdl/ClientIPCTypes.cpp:47:5: note: in instantiation of function template specialization 'mozilla::ipc::WriteIPDLParam<const mozilla::TimeStamp &>' requested here
 INFO -      WriteIPDLParam(aMsg, aActor, (aVar).creationTime());
 INFO -      ^
 INFO -  In file included from UnifiedProtocols0.cpp:2:
 INFO -  In file included from /builds/worker/workspace/obj-build/ipc/ipdl/BlobTypes.cpp:17:
 INFO -  In file included from /builds/worker/workspace/obj-build/dist/include/mozilla/ipc/ShmemMessageUtils.h:11:
ERROR -  /builds/worker/workspace/obj-build/dist/include/mozilla/ipc/IPDLParamTraits.h:47:33: error: no member named 'Read' in 'IPC::ParamTraits<mozilla::TimeStamp>'
 INFO -      return IPC::ParamTraits<P>::Read(aMsg, aIter, aResult);
 INFO -             ~~~~~~~~~~~~~~~~~~~~~^
 INFO -  /builds/worker/workspace/obj-build/dist/include/mozilla/ipc/IPDLParamTraits.h:72:30: note: in instantiation of function template specialization 'mozilla::ipc::IPDLParamTraits<mozilla::TimeStamp>::Read<mozilla::TimeStamp>' requested here
 INFO -    return IPDLParamTraits<P>::Read(aMsg, aIter, aActor, aResult);
 INFO -                               ^
 INFO -  /builds/worker/workspace/obj-build/ipc/ipdl/ClientIPCTypes.cpp:85:12: note: in instantiation of function template specialization 'mozilla::ipc::ReadIPDLParam<mozilla::TimeStamp>' requested here
 INFO -      if ((!(ReadIPDLParam(aMsg, aIter, aActor, (&((aVar)->creationTime())))))) {
 INFO -             ^
 INFO -  12 errors generated.
ERROR -  gmake[4]: *** [/builds/worker/checkouts/gecko/config/rules.mk:662: UnifiedProtocols0.o] Error 1

files_per_unified_file=8
https://treeherder.mozilla.org/logviewer?job_id=357232932&repo=try&lineNumber=15509

 INFO -             ~~~~~~~~~~~~~~~~~~~~~^
 INFO -  /builds/worker/workspace/obj-build/dist/include/mozilla/ipc/IPDLParamTraits.h:72:30: note: in instantiation of function template specialization 'mozilla::ipc::IPDLParamTraits<mozilla::gfx::SurfaceFormat>::Read<mozilla::gfx::SurfaceFormat>' requested here
 INFO -    return IPDLParamTraits<P>::Read(aMsg, aIter, aActor, aResult);
 INFO -                               ^
 INFO -  /builds/worker/workspace/obj-build/ipc/ipdl/GraphicsMessages.cpp:1181:20: note: in instantiation of function template specialization 'mozilla::ipc::ReadIPDLParam<mozilla::gfx::SurfaceFormat>' requested here
 INFO -              if ((!(ReadIPDLParam(aMsg, aIter, aActor, (&((aVar)->get_gfxImageFormat())))))) {
 INFO -                     ^
 INFO -  In file included from UnifiedProtocols1.cpp:2:
 INFO -  In file included from /builds/worker/workspace/obj-build/ipc/ipdl/GamepadEventTypes.cpp:15:
 INFO -  In file included from /builds/worker/workspace/obj-build/dist/include/mozilla/ipc/ShmemMessageUtils.h:11:
ERROR -  /builds/worker/workspace/obj-build/dist/include/mozilla/ipc/IPDLParamTraits.h:47:33: error: no member named 'Read' in 'IPC::ParamTraits<mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits>>'
 INFO -      return IPC::ParamTraits<P>::Read(aMsg, aIter, aResult);
 INFO -             ~~~~~~~~~~~~~~~~~~~~~^
 INFO -  /builds/worker/workspace/obj-build/dist/include/mozilla/ipc/IPDLParamTraits.h:72:30: note: in instantiation of function template specialization 'mozilla::ipc::IPDLParamTraits<mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits>>::Read<mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits>>' requested here
 INFO -    return IPDLParamTraits<P>::Read(aMsg, aIter, aActor, aResult);
 INFO -                               ^
 INFO -  /builds/worker/workspace/obj-build/ipc/ipdl/GraphicsMessages.cpp:1196:20: note: in instantiation of function template specialization 'mozilla::ipc::ReadIPDLParam<mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits>>' requested here
 INFO -              if ((!(ReadIPDLParam(aMsg, aIter, aActor, (&((aVar)->get_IntSize())))))) {
 INFO -                     ^
 INFO -  In file included from UnifiedProtocols1.cpp:2:
 INFO -  In file included from /builds/worker/workspace/obj-build/ipc/ipdl/GamepadEventTypes.cpp:15:
 INFO -  In file included from /builds/worker/workspace/obj-build/dist/include/mozilla/ipc/ShmemMessageUtils.h:11:
ERROR -  /builds/worker/workspace/obj-build/dist/include/mozilla/ipc/IPDLParamTraits.h:41:26: error: no member named 'Write' in 'IPC::ParamTraits<mozilla::gfx::IntSizeTyped<mozilla::LayoutDevicePixel>>'
 INFO -      IPC::ParamTraits<P>::Write(aMsg, std::forward<R>(aParam));
 INFO -      ~~~~~~~~~~~~~~~~~~~~~^
 INFO -  /builds/worker/workspace/obj-build/dist/include/mozilla/ipc/IPDLParamTraits.h:64:37: note: in instantiation of function template specialization 'mozilla::ipc::IPDLParamTraits<mozilla::gfx::IntSizeTyped<mozilla::LayoutDevicePixel>>::Write<const mozilla::gfx::IntSizeTyped<mozilla::LayoutDevicePixel> &>' requested here
 INFO -    IPDLParamTraits<std::decay_t<P>>::Write(aMsg, aActor,
 INFO -                                      ^
 INFO -  /builds/worker/workspace/obj-build/ipc/ipdl/HeadlessWidgetTypes.cpp:33:5: note: in instantiation of function template specialization 'mozilla::ipc::WriteIPDLParam<const mozilla::gfx::IntSizeTyped<mozilla::LayoutDevicePixel> &>' requested here
 INFO -      WriteIPDLParam(aMsg, aActor, (aVar).InitialClientSize());
 INFO -      ^
 INFO -  In file included from UnifiedProtocols1.cpp:2:
 INFO -  In file included from /builds/worker/workspace/obj-build/ipc/ipdl/GamepadEventTypes.cpp:15:
 INFO -  In file included from /builds/worker/workspace/obj-build/dist/include/mozilla/ipc/ShmemMessageUtils.h:11:
ERROR -  /builds/worker/workspace/obj-build/dist/include/mozilla/ipc/IPDLParamTraits.h:47:33: error: no member named 'Read' in 'IPC::ParamTraits<mozilla::gfx::IntSizeTyped<mozilla::LayoutDevicePixel>>'
 INFO -      return IPC::ParamTraits<P>::Read(aMsg, aIter, aResult);
 INFO -             ~~~~~~~~~~~~~~~~~~~~~^
 INFO -  /builds/worker/workspace/obj-build/dist/include/mozilla/ipc/IPDLParamTraits.h:72:30: note: in instantiation of function template specialization 'mozilla::ipc::IPDLParamTraits<mozilla::gfx::IntSizeTyped<mozilla::LayoutDevicePixel>>::Read<mozilla::gfx::IntSizeTyped<mozilla::LayoutDevicePixel>>' requested here
 INFO -    return IPDLParamTraits<P>::Read(aMsg, aIter, aActor, aResult);
 INFO -                               ^
 INFO -  /builds/worker/workspace/obj-build/ipc/ipdl/HeadlessWidgetTypes.cpp:44:12: note: in instantiation of function template specialization 'mozilla::ipc::ReadIPDLParam<mozilla::gfx::IntSizeTyped<mozilla::LayoutDevicePixel>>' requested here
 INFO -      if ((!(ReadIPDLParam(aMsg, aIter, aActor, (&((aVar)->InitialClientSize())))))) {
 INFO -             ^
 INFO -  10 errors generated.
ERROR -  gmake[4]: *** [/builds/worker/checkouts/gecko/config/rules.mk:662: UnifiedProtocols1.o] Error 1

There may be others lurking behind those once fixed as well, but those are all which turned up in the first go-around.

See Also: → 1740035

The severity field is not set for this bug.
:jld, could you have a look please?

For more information, please visit auto_nag documentation.

Flags: needinfo?(jld)

I don't know what the severity should be; how important are non-unified builds?

Flags: needinfo?(jld) → needinfo?(ryanvm)

(In reply to Jed Davis [:jld] ⟨⏰|UTC-7⟩ ⟦he/him⟧ from comment #2)

I don't know what the severity should be; how important are non-unified builds?

They are very important otherwise we regress.

It looks like the general form of the failure is an IPDL-generated type that depends on a C++ type, with the latter's ParamTraits in a separate header from the type definition (to avoid pulling in extra headers and slowing down the build in contexts where ParamTraits isn't needed), but IPDL hasn't been told about that other header with an include declaration.

Missing headers for the types seen here look like:

  • CrossOriginEmbedderPolicyipc/IPCMessageUtilsSpecializations.h
  • nsContentPolicyTypeipc/IPCMessageUtilsSpecializations.h
  • TimeStampipc/IPCMessageUtilsSpecializations.h
  • gfx::SurfaceFormatmozilla/GfxMessageUtils.h
  • gfx::IntSizeTyped<T>mozilla/GfxMessageUtils.h
Severity: -- → S3
Flags: needinfo?(ryanvm)
You need to log in before you can comment on or make changes to this bug.